我刚刚开始学习机器学习,并且正在观看一个教程,其中辅导者使用OneHotEncoder进行伪编码(他给出的原因是,最终分类特征之间不会存在关联),例如西班牙(值2)大于法国(值1)。这是代码:
Dataset = pandas.read_csv('Data.csv')
X = Dataset.iloc[:,:3].values
onehotencoder = OneHotEncoder( categorical_features=[0])
onehotencoder.fit_transform(X).toarray()
在PyCharm上尝试此操作时,收到以下警告:
DeprecationWarning:不推荐使用'categorical_features'关键字 在0.20版中,并将在0.22版中删除。您可以使用 改为使用ColumnTransformer。 “改为使用ColumnTransformer。”, 弃用警告)
所以我去查阅了ColumnTransformer的文档,但是我不明白该怎么做。
答案 0 :(得分:1)
ColumnTransformer
的文档可以为found here。
您将OneHotEncoder
传递给transformer
参数,就像创建Pipeline
一样。
下面是如何使用它的示例。
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
transformer = ColumnTransformer(
transformers=[
("OneHot", # Just a name
OneHotEncoder(), # The transformer class
[0] # The column(s) to be applied on.
)
]
)
X = [
['a', 0],
['b', 1],
['a', 2]
]
print(transformer.fit_transform(X))
> [[1. 0.]
> [0. 1.]
> [1. 0.]]
答案 1 :(得分:0)
ColumnTransformer的文档 示例进行检查。 #TODO:创建LabelEncoder对象,并将其适合X中的每个功能
# import preprocessing from sklearn
from sklearn import preprocessing
# 1. INSTANTIATE
# encode labels with value between 0 and n_classes-1.
le = preprocessing.LabelEncoder()
# 2/3. FIT AND TRANSFORM
# use df.apply() to apply le.fit_transform to all columns
X_2 = X.apply(le.fit_transform)
X_2.head()
如果您希望看到一个端到端的示例,请check。