OneHotEncoder 处理字符串

数据挖掘 Python scikit-学习 熊猫 编码
2022-02-13 20:39:18

我到处都在阅读新问题和博客,自 0.20 版以来,OneHotEncoder 能够处理字符串功能。

此外,文档看起来更加模棱两可。以下是文档的前两行:

将分类整数特征编码为 one-hot 数值数组。这个转换器的输入应该是一个类似数组的整数或字符串,表示分类(离散)特征所采用的值。

第一行说

编码分类整数特征

下一行说

输入应该是整数或字符串之类的数组。

当我尝试它时,我仍然得到值错误。

print(X.columns)
encoder = OneHotEncoder(categorical_features=[1,4,5])
encoder.fit(X)

Index(['age', 'sex', 'bmi', 'children', 'smoker', 'region'], dtype='object')
ValueError: could not convert string to float: 'female'

我知道使用 处理字符串特征编码的方法LabelEncoder特别想了解这一点。ColumnTransfomerpd.getDummies()

1个回答

这似乎仅在您使用时才会失败categorical_features,在编码器扩展到字符串的同时已弃用。使用 now-recommendedColumnTransformer来指定要编码的列与字符串一起使用(就像将编码器应用于整个帧一样,尽管这不是您想要的,具有类似的功能bmi)。

例如,

onehot = OneHotEncoder(...)
cat_cols = [1,4,5]
preproc = ColumnTransformer(transformers=[('onehot', onehot, cat_cols)],
                            remainder='passthrough')
preproc.fit_transform(X)