Nav*_*ade 1 python machine-learning data-science one-hot-encoding
我在使用 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'
Run Code Online (Sandbox Code Playgroud)
在OneHotEncoder 的文档中没有'categorical_features'
OneHotEncoder 的旧文档 (0.20)显示'categorical_features'将在 0.22 中删除(sklearn最新版本的编号为 0.22.1),您必须使用ColumnTransformer。
但我不知道如何使用它。但也许用户指南中的示例可以帮助使用它。
编辑:
sklearn 0.20
pip install -U scikit-learn==0.20
Run Code Online (Sandbox Code Playgroud)
代码
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)
Run Code Online (Sandbox Code Playgroud)
结果:
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.]]
Run Code Online (Sandbox Code Playgroud)
sklearn 0.22
pip install -U scikit-learn==0.22
Run Code Online (Sandbox Code Playgroud)
代码:
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)
Run Code Online (Sandbox Code Playgroud)
结果:
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']]
Run Code Online (Sandbox Code Playgroud)
在 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4038 次 |
| 最近记录: |