В документации для OneHotEncoder нет 'categorical_features'
Более старая документация (0,20) для OneHotEncoder показывает, что 'categorical_features'
будет удалено в 0,22 (и sklearn
последняя версия имеет номер 0.22.1), и вы должны использовать ColumnTransformer .
Но я не знаю, как его использовать. Но, возможно, примеры в Руководство пользователя могут помочь в его использовании.
РЕДАКТИРОВАТЬ:
Sklearn 0,20
pip install -U scikit-learn==0.20
Код
import sklearn
print(sklearn.__version__)
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
import numpy as np
print('--- data ---')
X = [
['Male', 1],
['Female', 3],
['Female', 2]
]
X = np.array(X)
print(X)
print('--- LabelEncoder ---')
le = LabelEncoder()
X[:,0] = le.fit_transform(X[:,0])
print(X)
print('--- OneHotEncoder ---')
ohe = OneHotEncoder(categorical_features=[0])
X = ohe.fit_transform(X).toarray()
print(X)
Результат:
0.20.0
--- data ---
[['Male' '1']
['Female' '3']
['Female' '2']]
--- LabelEncoder ---
[['1' '1']
['0' '3']
['0' '2']]
--- OneHotEncoder ---
[[0. 1. 1.]
[1. 0. 3.]
[1. 0. 2.]]
Sklearn 0.22
pip install -U scikit-learn==0.22
Код:
import sklearn
print(sklearn.__version__)
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
import numpy as np
print('--- data ---')
X = [
['Male', 1],
['Female', 3],
['Female', 2]
]
X = np.array(X)
print(X)
print('--- LabelEncoder ---')
le = LabelEncoder()
X[:,0] = le.fit_transform(X[:,0])
print(X)
print('--- OneHotEncoder ---')
ct = ColumnTransformer([('my_ohe', OneHotEncoder(), [0])], remainder='passthrough')
X = ct.fit_transform(X) #.toarray()
print(X)
Результат:
0.22.2.post1
--- data ---
[['Male' '1']
['Female' '3']
['Female' '2']]
--- LabelEncoder ---
[['1' '1']
['0' '3']
['0' '2']]
--- OneHotEncoder ---
[['0.0' '1.0' '1']
['1.0' '0.0' '3']
['1.0' '0.0' '2']]
В 0,22 он работает даже без LabelEncoder
, но для 0,20 нужно LabelEncoder
import sklearn
print(sklearn.__version__)
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
import numpy as np
print('--- data ---')
X = [
['Male', 1],
['Female', 3],
['Female', 2]
]
X = np.array(X)
print(X)
print('--- OneHotEncoder ---')
ct = ColumnTransformer([('my_ohe', OneHotEncoder(), [0])], remainder='passthrough')
X = ct.fit_transform(X) #.toarray()
print(X)