1.1 缺失值
很多比赛和实际项目中,常常有字段缺失值很多但是有不能舍弃字段的情况,因此数据预处理中非常重要的一项就是处理缺失值。
1.2 impute.SimpleImputer
calss sklearn.impute.SimpleImputer(missing_valued=nan,strategy='mean', fill_value=None, verboser=0,copy=True)

1.3 使用impute.SimpleImputer填充缺失值

1.4 使用pandas和numpy进行填充更简单

1.5 使用随机森林进行填充缺失值,通常在比赛中,不能填充test中数据集,至于train中数据集可以自行考虑要不要填充。下面使用随机森林回归进行说明。
使用随机森林回归填充缺失值:任何回归都是从特征矩阵中学习然后求解连续型标签y的过程,之所以能实现这个过程,是因为回归算法认为特征矩阵和标签存在某种联系,实际上,标签和特征是可以相互转化的,比如说,可以用一个地区、环境,附近学校数量预测房价的问题中,我们也可以反过来,用环境,附近学校数量,房价来预测地区,而回归填充缺失值就是利用了这种思想。
对于一个有N个特征的数据来说,其中特征T有缺失值,我们可以把特征T当做标签,其余N-1个特征和原本的标签组成新的特征矩阵。对于T来说,它没有缺失值的部分就是train,这部分数据既有标签也有特征,而她缺失值的部分只有特征没有标签,就是我们需要预测的部分。
特征T不缺失的值对应的其他n-1个特征+原本的标签:X_train
特征T不缺失的值:Y_train
特征T缺失的值对应的其他n-1个特征+原本的标签:X_test
特征T缺失的值:Y_test
对于某一个特征大量缺失,其他特征却很完整的情况下,非常适合用随机森林填充。
如果数据中除了T特征之外,还有其他特征缺失怎么办呢?遍历所有的特征,从缺失值最少的开始进行填充(因为缺失值最少的特征所需要的准确信息最少),填充一个特征时,先将其他特征的缺失值用0代替,每完成一次回归预测,就将预测值放到原本的特征矩阵中,再继续填充下一个特征。每填充一次缺失值的特征就会少一个,每次循环后,需要用0填充的特征就越来越少,当进行到最后一个特征的时候(缺失值最多的特征),已经没有需要用0来填充的特征了,遍历所有特征会后,数据就完整了,不再有缺失值。
