我刚开始学习机器学习,看了一个教程,教程中讲师使用了OneHotEncoder进行虚拟编码(他给出的理由是防止分类特征之间产生关系,例如西班牙(值为2)大于法国(值为1)。这是代码:
Dataset = pandas.read_csv('Data.csv')X = Dataset.iloc[:,:3].valuesonehotencoder = OneHotEncoder( categorical_features=[0])onehotencoder.fit_transform(X).toarray()
我在PyCharm上尝试时收到了以下警告:
DeprecationWarning: ‘categorical_features’关键字在0.20版本中已被废弃,并将在0.22版本中移除。你可以使用ColumnTransformer代替。 “use the ColumnTransformer instead.”, DeprecationWarning)
于是我去查看了ColumnTransformer的文档,但我不明白如何使用它。
回答:
ColumnTransformer的文档可以在这里找到。你可以像创建Pipeline一样,将OneHotEncoder传递给transformer参数。
下面是一个使用示例。
from sklearn.compose import ColumnTransformerfrom sklearn.preprocessing import OneHotEncodertransformer = ColumnTransformer( transformers=[ ("OneHot", # 只是一个名称 OneHotEncoder(), # 变换器类 [0] # 要应用的列(s)。 ) ])X = [ ['a', 0], ['b', 1], ['a', 2]]print(transformer.fit_transform(X))> [[1. 0.]> [0. 1.]> [1. 0.]]