Skip to content

Latest commit

 

History

History
28 lines (16 loc) · 1.93 KB

File metadata and controls

28 lines (16 loc) · 1.93 KB

缺失值插补

https://zhuanlan.zhihu.com/p/137175585

KNN插补

https://www.cnblogs.com/panchuangai/p/13390354.html

sklearn.imputer 均值,中位数插补,KNN插补,多重插补都有

RF插补

https://blog.csdn.net/qq_42374697/article/details/108481645

对于一个有n个特征的数据来说,其中特征T有缺失值,我们就把特征T当作标签,其他的n-1个特征 + 原本的标签 = 新的特征矩阵 那对于T来说,它没有缺失的部分,就是我们的 Y_train,这部分数据既有标签也有特征,而它缺失的部分,只有特征没有标签,就是我们需要预测的部分。

特征T不缺失的值对应的其他n-1个特征 + 本来的标签:X_train 特征T不缺失的值:Y_train

特征T缺失的值对应的其他n-1个特征 + 本来的标签:X_test 特征T缺失的值:未知,我们需要预测的 Y_test

那如果数据中除了特征T之外,其他特征也有缺失值怎么办? 答案是遍历所有的特征,从缺失最少的开始进行填补(因为填补缺失最少的特征所需要的准确信息最少)。填补一个特征时,先将其他特征的缺失值用0代替,每完成一次回归预测,就将预测值放到原本的特征矩阵中,再继续填补下一个特征。每一次填补完毕,有缺失值的特征会减少一个,所以每次循环后,需要用0来填补的特征就越来越少。当进行到最后一个特征时(这个特征应该是所有特征中缺失值最多的),已经没有任何的其他特征需要用0来进行填补了,而我们已经使用回归为其他特征填补了大量有效信息,可以用来填补缺失最多的特征。遍历所有的特征后,数据就完整,不再有缺失值了。

notice: code里的实现有些不一样,先用所有没有缺失值的插补缺失值最少的,每个特征插补完成后都当作没有缺失值的数据,在逐个插补缺失值更多的