import numpy as np
from sklearn.preprocessing import OneHotEncoder
...
X = ...
# Encoding the values of column Country
onehotencoder = OneHotEncoder(sparse=False)
X = np.concatenate(
onehotencoder.fit_transform(X[:,0:1]),
X[:,1:],
axis=1
)
print(X)
# Do this to show what categories are collected and encoded.
print(onehotencoder.categories_)
Старая версия scikit-learn делала все проецирование, кодирование и повторное объединение, опуская некатегоричные столбцы справа. Сейчас он не поддерживается, поэтому вместо этого мы вручную извлекаем столбец Country
, пропускаем его через кодировщик и объединяем их вместе.
OneHotEncoder
по умолчанию возвращает «разреженные» массивы, и мы можем избегайте преобразования их в массивы numpy, указав sparse=False
.
. Обратите внимание, что LabelEncoder
является избыточным, поскольку OneHotEncoder
может в любом случае автоматически соответствовать строковым значениям (по крайней мере, в последних версиях).