【数据挖掘】【笔记】数据预处理之类别特征编码

来源:互联网 发布:网络上小泰迪什么意思 编辑:程序博客网 时间:2024/06/03 14:14

定义

类别特征:如['male', 'female']等,模型不能直接识别的数据。处理的目的是将不能够定量处理的变量量化。
特别的比如星期[1, 2, ... , 7]虽然是数字,但是数值之间没有大小顺序关系,需要视为类别特征。

处理

编码为模型可识别的数值型特征。

根据模型处理能力的不同,需要考虑单纯映射为数值或哑变量编码。(尤其是线型模型和SVMs with standard kernels, knn?)

sklearn.preprocessing.OneHotEncder

This estimator transforms each categorical feature with m possible values into m binary features, with only one active.

把所有可能取值转换为二进制表示,只含一个一的那种?

结果

  • dt, rf, gb, ada等对于缩放,编码等不敏感,结果差异不大
  • svr, knn结果缩放有提高,编码还会变差?

pandas.get_dummies

哑变量编码,适用于pd.DataFrame。

功能和OneHot类似,有额外的drop_first功能。

总结

  • 哑变量编码对于sklearn中的sklearn模型的意义不大。尤其是基于树模型没有影响。
  • 线性模型有影响
  • svm影响不大,甚至默认参数时因为特征增加,表现下降
  • knn不受影响(knn受冗余特征的影响较大)

为什么无关紧要的特征会损害KNN?
image
答:如上图,横轴为无关紧要特征,因为横轴特征的出现,将原本鲜明的聚类特征模糊化,纵轴权重被横轴稀释,从而得到错误的聚类结果。