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

问题描述 投票:0回答:1

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

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

我想你正在寻找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)

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

© www.soinside.com 2019 - 2024. All rights reserved.