当我在sklearn和pandas中使用单热编码进行数据处理时,我有两个选择:
第一种方式:train_data使用fit_transform,test_data仅使用转换
第二种方式:或者我可以将pandas get_dummies用于两者
它们之间有什么区别?他们有同样的效果吗?
谢谢
答案 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数据帧。