我目前正在处理一个相当特殊的数据集:它有大约1000列和100万行,但大约90%的值是NaN。这并不是因为记录质量差,而是因为数据代表对个体的测量,每个个体只有大约100个特征是相关的。因此,填补缺失值会完全破坏数据中的信息。
仅仅将具有相同特征的个体归为一组,并只考虑每个子组相关的列也并不容易,因为这实际上会导致每组列的群体非常小(对于给定的个体,几乎任何填充列的组合都是可能的)。
问题是,scikit-learn的降维方法无法处理缺失值。是否有可以处理的软件包,或者我应该使用不同的方法并跳过降维?
回答:
你可以使用能够处理缺失值的梯度提升软件包,这对你的情况非常理想。你提到需要软件包,R中的gbm和Python中的xgboost都可以使用。如果你想了解xgboost如何自动处理缺失值,可以阅读这篇论文的第3.4节以获得见解。