使用ColumTransformer进行虚拟编码

时间:2018-12-16 13:27:41

标签: python machine-learning

我刚刚开始学习机器学习,并且正在观看一个教程,其中辅导者使用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的文档,但是我不明白该怎么做。

2 个答案:

答案 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