fit_transform,sklearn中的转换和pandas中的get_dummies有什么不同?

时间:2016-11-27 15:50:04

标签: python pandas scikit-learn

当我在sklearn和pandas中使用单热编码进行数据处理时,我有两个选择:

第一种方式:train_data使用fit_transform,test_data仅使用转换

第二种方式:或者我可以将pandas get_dummies用于两者

它们之间有什么区别?他们有同样的效果吗?

谢谢

1 个答案:

答案 0 :(得分:1)

基本上,OneHotEncoder和pandas.get_dummies都会从分类变量中创建二进制变量。 例如:

df = pd.DataFrame({'A': ["1", "1", "3"], 'B': ["2", "3", "1"],
                'C': [1, 2, 3]})

print(pd.get_dummies(df, prefix=['col1', 'col2']))

将打印出来:

C  col1_1  col1_3  col2_1  col2_2  col2_3
0  1     1.0     0.0     0.0     1.0     0.0
1  2     1.0     0.0     0.0     0.0     1.0
2  3     0.0     1.0     1.0     0.0     0.0

OneHotEncoder可以处理非字符串变量,而get_dummies可以处理。此外,OneHotEncoder将返回一个数组,而不是pandas数据帧。