OneHotEncoder: __init __ () получил неожиданный аргумент ключевого слова 'categoryorical_features' - PullRequest
0 голосов
/ 04 марта 2020

У меня ошибка с onehotencoder, где отсутствует атрибут thecategorical_features, я использую Google Colab.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
le = LabelEncoder()
X = star.iloc[:,:6].values
y = star.iloc[:,-1].values
X[:,5] = le.fit_transform(X[:,5])
y[:] = le.fit_transform(y[:])

ohe = OneHotEncoder(categorical_features= [5])
X = ohe.fit_transform(X).toarray()


TypeError                                 Traceback (most recent call last)
<ipython-input-47-93f73a1a04ad> in <module>()
----> 1 ohe = OneHotEncoder(categorical_features= [5])
      2 X = ohe.fit_transform(X).toarray()

TypeError: __init__() got an unexpected keyword argument 'categorical_features'

1 Ответ

1 голос
/ 04 марта 2020

В документации для 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...