使用单热编码处理sklearn中的分类变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用单热编码处理sklearn中的分类变量相关的知识,希望对你有一定的参考价值。
有人可以帮助任何现有的Python类用于sklearn
的分类编码器,它会勾选以下复选框吗?
- pandas friendly - 返回数据帧的选项
- 应该能够在one-hot编码中删除1列
- 处理测试数据中的unseens类别。
- 与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)