最近接到了一些真实的数据,数据中包含着许多缺失值,如何对缺失值处理,能更好的为我们做数据分析,更高效率的建模,缩小在测试集上预测分析的偏差,当然这个偏差越小我们肯定越高兴的。
数据准备
我用的是一份地理样本数据,里面有坐标,各种物质成分(Ca,N,P等)
对于缺失数据的检验,有多个方法。
第一种:
library(VIM)
aggr(env,prop=T,numbers=T)
函数用法,可以在控制台加载完包后help()或者?函数
一看这数据还不算崩溃,但是缺失还是比较严重的,
第二种方法:
用mice包中的md.pattern(data)
怎么解读这个呢,其实最后一行返回的就是缺失数目,98为一共有多少缺失值。
缺失值的处理方法有哪些呢?我主要是做笔记
1、删除缺失值
其实这种方法只有在自己拥有大量的数据进行模型训练才可以选择删除,比如用na.omit()或者
在建模时设置na.action=na.omit。当然,实际业务在过手的时候,数据量不大的情况下,或者你删除
缺失值后,建立的模型不能很好的解释业务,可以考虑缺失值的重新认定。
2、删除个别变量
对于有些确实很严重的数据,比如缺失值的数量超过了你在业务上认定的比例,那么可以删除这个变量。但是我最近接到的数据居然是长这样的,就是这个变量对于要建立的模型很重要,在不能
删除这个变量,我们需要考量变量在模型中的地位以及训练和测试的数量上做一抉择。