基于ColumTransform的虚拟编码

2024-05-04 21:41:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习机器学习,我正在看一个教程,导师使用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: The 'categorical_features' keyword is deprecated in version 0.20 and will be removed in 0.22. You can use the ColumnTransformer instead. "use the ColumnTransformer instead.", DeprecationWarning)

所以我去查了ColumnTransformer的文档,但是我不明白怎么做。在


Tags: csvthein机器编码use教程features
2条回答

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.]]

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。在

相关问题 更多 >