Python: 在不填补缺失数据的情况下进行机器学习

我目前正在处理一个相当特殊的数据集:它有大约1000列和100万行,但大约90%的值是NaN。这并不是因为记录质量差,而是因为数据代表对个体的测量,每个个体只有大约100个特征是相关的。因此,填补缺失值会完全破坏数据中的信息。

仅仅将具有相同特征的个体归为一组,并只考虑每个子组相关的列也并不容易,因为这实际上会导致每组列的群体非常小(对于给定的个体,几乎任何填充列的组合都是可能的)。

问题是,scikit-learn的降维方法无法处理缺失值。是否有可以处理的软件包,或者我应该使用不同的方法并跳过降维?


回答:

你可以使用能够处理缺失值的梯度提升软件包,这对你的情况非常理想。你提到需要软件包,R中的gbm和Python中的xgboost都可以使用。如果你想了解xgboost如何自动处理缺失值,可以阅读这篇论文的第3.4节以获得见解。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注