新的 Sklearn 语法
New Sklearn syntax
我如何重写此代码,使其适用于 scikit-learn 0.22 版本?
from sklearn.preprocessing import LabelEncoder, OneHotEncoderlabelencoder = LabelEncoder()
x[:,0] = labelencoder.fit_transform(x[:,0])
onehotencoder = OneHotEncoder(categories = 0)
x = onehotencoder.fit_transform(x).toarray()
最好知道你试图解决什么问题,因为不清楚你的代码应该做什么。
有一件事是肯定的,你不应该使用 LabelEncoder
来编码你的数据(即 X
),而是直接使用 OneHotEncoder
。所以要一次性编码一个类别矩阵:
import numpy as np
from sklearn.preprocessing import OneHotEncoder
X = np.array(
[['a', 'b'],
['b', 'a']],
dtype=object
)
encoder = OneHotEncoder()
X_trans = encoder.fit_transform(X)
print(X_trans.A)
你将得到:
[[1. 0. 0. 1.]
[0. 1. 1. 0.]]
如果您只想在列的子集上应用编码器,则需要使用 ColumnTransformer
import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
X = np.array(
[['a', 'b', 1],
['b', 'a', 2]],
dtype=object
)
preprocessor = ColumnTransformer(
[('cat-encoder', OneHotEncoder(), [0, 1])],
remainder="passthrough"
)
X_trans = preprocessor.fit_transform(X)
print(X_trans)
你会得到类似的东西:
[[1.0 0.0 0.0 1.0 1]
[0.0 1.0 1.0 0.0 2]]
我如何重写此代码,使其适用于 scikit-learn 0.22 版本?
from sklearn.preprocessing import LabelEncoder, OneHotEncoderlabelencoder = LabelEncoder()
x[:,0] = labelencoder.fit_transform(x[:,0])
onehotencoder = OneHotEncoder(categories = 0)
x = onehotencoder.fit_transform(x).toarray()
最好知道你试图解决什么问题,因为不清楚你的代码应该做什么。
有一件事是肯定的,你不应该使用 LabelEncoder
来编码你的数据(即 X
),而是直接使用 OneHotEncoder
。所以要一次性编码一个类别矩阵:
import numpy as np
from sklearn.preprocessing import OneHotEncoder
X = np.array(
[['a', 'b'],
['b', 'a']],
dtype=object
)
encoder = OneHotEncoder()
X_trans = encoder.fit_transform(X)
print(X_trans.A)
你将得到:
[[1. 0. 0. 1.]
[0. 1. 1. 0.]]
如果您只想在列的子集上应用编码器,则需要使用 ColumnTransformer
import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
X = np.array(
[['a', 'b', 1],
['b', 'a', 2]],
dtype=object
)
preprocessor = ColumnTransformer(
[('cat-encoder', OneHotEncoder(), [0, 1])],
remainder="passthrough"
)
X_trans = preprocessor.fit_transform(X)
print(X_trans)
你会得到类似的东西:
[[1.0 0.0 0.0 1.0 1]
[0.0 1.0 1.0 0.0 2]]