训练集样本中有的数值特征列含有缺失值,一般怎么处理?我一般都是取这一列的平均值,有更好的方法,或者其他可行的方法吗?
5个回答
1. 替代法
用该列的中位数或者平均值或者众数来代替这列中所有的缺失值。也可以从这一列中随机抽样(bootstrap)。
对于时间序列变量,可以用插值的方法。
这个方法的缺点是让数据增加了很多noise。
2. 预测法
把这一列当成标签,用剩下变量来预测缺失值。
一般用比较简单的模型,比如可以用kNN,regression tree。
这个方法的缺点是引入了偏差。
3. 消极处理
如果某一行的缺失值很多,就把这一行删了。
如果某一列的缺失值很多,就把这一列删了。
或者直接不处理,有些模型,比如random forest,可以直接处理有缺失值的数据。
SofaSofa数据科学社区DS面试题库 DS面经先看看缺失值多不多,如果这一变量里面95%都是缺失的,我觉得这一列的参考意义也不会大,不如就把这一列给删掉。
对于数值变量(numeric)来说,可以用平均值来代替。
对于分类变量(categorical)来说,可以把缺失值统一当作一个新的分类来处理。
SofaSofa数据科学社区DS面试题库 DS面经
补充一下,还需要先看看这些missing data是随机的还是非随机的。也许由于问卷的设定,采样的方法等等问题,可能导致某类型的数值更容易缺失。
-
雷猴
2017-04-02 11:25
从实际角度出发,首先要了解缺失的原因;其次,看缺失值和预测值的联合分布,看看其中有没有什么蹊跷。
从处理的角度来说,如题主说到的,
- 可以用均值,也可以用众数,中位数;
- 可以按类的均值(众数、中位数)补全,比如说数据中A列中的数值有缺失,B列是一个categorical variable,你可以按照B列中的类别,用类别的均值对A列中的数据补全。
直接看这个链接就完事了,清晰明了
ps 我的实际经验是在imputing的时候用MCMC sampling或者Random Forest的效果很棒,尤其推荐mice 这个package
SofaSofa数据科学社区DS面试题库 DS面经