使用单热编码处理sklearn中的分类变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用单热编码处理sklearn中的分类变量相关的知识,希望对你有一定的参考价值。

有人可以帮助任何现有的Python类用于sklearn的分类编码器,它会勾选以下复选框吗?

  1. pandas friendly - 返回数据帧的选项
  2. 应该能够在one-hot编码中删除1列
  3. 处理测试数据中的unseens类别。
  4. 与sklearn Pipeline对象兼容。
答案

我想你正在寻找pandas.get_dummies

请参阅以下示例。

df = pd.DataFrame({"col_a":['cat','dog','cat','mouse','mouse','cat'], 'col_b':[10,14,16,18,20,22], 'col_c':['a','a','a','b','b','a']})

# `drop_first` parameter will drop the one categorical column
df = pd.get_dummies(df, columns=['col_a','col_c'], drop_first=True)
print(df)

输出:

  col_b  col_a_dog  col_a_mouse  col_c_b                                                                                               
0     10          0            0        0                                                                                               
1     14          1            0        0                                                                                               
2     16          0            0        0                                                                                               
3     18          0            1        1                                                                                               
4     20          0            1        1                                                                                               
5     22          0            0        0      

它涵盖了您提到的前两个条件。

对于第三种情况,您可以执行以下操作。

  • 在训练数据上创建虚拟对象 dummy_train = pd.get_dummies(train)
  • 在新的(看不见的数据)中创建虚拟对象 dummy_new = pd.get_dummies(new_data)
  • 将新数据重新索引到训练数据的列,用0填充缺失值 dummy_new.reindex(columns = dummy_train.columns, fill_value=0)

实际上,任何分类的新功能都不会进入分类器,但我认为这不会引起问题,因为它不知道如何处理它们。

以上是关于使用单热编码处理sklearn中的分类变量的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据框列的分类值转换为 sckikit-learn 中的单热编码列?

如何区分回归分析中的分类变量和有序变量?

python使用sklearn中的MultiLabelBinarizer函数将多标签的分类变量进行独热编码(One-Hot Encode Features With Multiple Labels)

使用Categorical_endcoder包对标称变量进行个性化编码

SKLearn:标签编码分类值的虚拟变量

在 sklearn 逻辑回归中使用分类数据作为特征