【问题标题】:Python: machine learning without imputing missing dataPython:机器学习,无需估算缺失数据
【发布时间】:2016-10-12 08:18:54
【问题描述】:

我目前正在处理一个非常特殊的数据集:它有大约 1000 列和 1M 行,但大约 90% 的值是 Nan。 这不是因为记录不好,而是因为数据代表了对个人进行的测量,并且每个人只有大约 100 个特征相关。因此,估算缺失值会完全破坏数据中的信息。

将具有相同特征的个体组合在一起并只考虑与每个子组相关的列并不容易,因为这实际上会为每组列产生极小的组(几乎所有填充列的组合都是对于给定的个人可能)。

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

【问题讨论】:

  • 我可能是错的,但这个问题 - 虽然很好 - 可能不属于 SO。
  • 一天结束后你想做什么?如果您只想进行某种聚类/社区检测,您可以将您的数据视为二分图并确定图中的模块。
  • PCA 实际上是用于此类数据集的。我建议你试一试。用零替换缺失值并对结果数据集应用 PCA。
  • 抱歉,这是个糟糕的主意。 NaN 不是零。如果你真的需要输入一个值,你应该尝试在它所在的高维空间中插入数据(这不是一个真正的选择,因为有效的条目似乎很少而且很远)或者你应该使用一些衡量该维度的集中趋势(平均值、中位数);这两个都不适合作为 PCA 的预处理步骤,因为您必然会低估任何特定方向的方差(这就是 PCA 的全部内容),但如果您真的需要了解 PC,它们是您能做的最好的.
  • 您提到只有 100 个特征是相关的,为什么不能为每个数据实例过滤 100 个特征?您显然必须识别特征 - 或者如果您不知道您的特征是什么,您可能应该研究神经网络,因为它们可以通过迭代(时期)自动识别哪些特征代表您的数据。归根结底,不良数据或不良功能是任何机器学习问题的主要克星。

标签: python machine-learning pca missing-data


【解决方案1】:

您可以使用梯度提升包来处理缺失值并且非常适合您的情况。因为您要求使用 R 中的 gbm 包和 python 中的 xgboost 包。如果您想知道如何在 xgboost 中自动处理缺失值,请转到通过this paper 的第 3.4 节了解。

【讨论】:

  • 如果您接受,请也给答案投票!谢谢!
猜你喜欢
  • 2018-09-26
  • 2020-06-07
  • 2016-02-27
  • 2017-06-23
  • 2023-03-26
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
相关资源
最近更新 更多