Таким образом, в настоящее время способ кодирования моих категориальных функций выглядит следующим образом:
# Import the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('weatherHistory_edited.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 6].values
# Encode categorical features
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 5] = labelencoder_X.fit_transform(X[:,5])
onehotencoder = OneHotEncoder(categorical_features= [5])
X = onehotencoder.fit_transform(X).toarray()
И это прекрасно работает, единственное, что я получаю предупреждение о том, что categoryorical_features является устаревшим ключевым словом в версии 0.20, и будетбыть удаленным в 0,22.Вместо этого вы можете использовать ColumnTransformer.
Так что я переключил последний блок кода на это:
# Encode categorical features
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
columntransformer = ColumnTransformer([("one_hot_encoder", OneHotEncoder(), [5])], remainder= "passthrough")
X = np.array(columntransformer.fit_transform(X))
Теперь, когда я использую этот код, я не получаю ошибку, но мой XМассив полностью запутывается и даже превращается в странный кортеж.
Дополнительная странная часть заключается в том, что при использовании другого набора данных этот код, похоже, работает.Пример:
# Import the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 4].values
# Encode categorical features
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
columntransformer = ColumnTransformer([("one_hot_encoder", OneHotEncoder(), [3])], remainder= "passthrough")
X = np.array(columntransformer.fit_transform(X))
В этом примере значение X получает ожидаемое значение.
Я загрузил наборы данных примера в общедоступное хранилище, чтобы вы могли воссоздать проблему:
https://github.com/BjornPijpops/encoding_issue