【问题标题】:scikit-learn classifer that can handle NaN in data?可以处理数据中的 NaN 的 scikit-learn 分类器?
【发布时间】:2016-02-02 16:52:51
【问题描述】:

是否有任何可以处理数据中的 NaN 的 scikit-learn 分类器?

附言我知道sklearn.preprocessing.Imputer

【问题讨论】:

  • 您不能修改数据以将 NaN 转换为 0 吗?还是会影响学习阶段?您实际使用的是哪个分类器?

标签: python machine-learning scikit-learn nan


【解决方案1】:

不,您为什么要为模型提供 NaN?你希望模型做什么? NaN 没有任何意义。所有使用 NaN 的数学只会传播更多的 NaN,最终会变得一团糟。

您能做的最好的事情就是将其视为缺失值并进行估算,正如您所引用的那样。

【讨论】:

  • 嗯,这远非事实。 NaN 应该被视为缺乏价值,并且有分类器能够比通过插补(这不是统计上合理的方法)更好地处理缺失值。例如 - 决策树/随机森林可以完美处理缺失值,不幸的是,scikit-learn 实现不是
  • 将 NaN 视为缺失值与建模“处理”NaN 不同。 NaN 不能由模型处理,因为它们没有意义。一些模型支持缺失值,但 NaN 并不意味着缺失。它可以用作丢失的占位符,但它是完全不同的东西。如果您编写代码以通过方差进行归一化,但您有一个始终相同的功能,您会得到 NaN。这并不意味着它的缺失。正如我所说,在 scikit learn 中,你可以对 NaN 做的最好的事情就是将它视为缺失并归咎于它——因为这是 scikit learn 的所有支持。
  • 我将 NaN 视为缺失,我不会对其进行估算,但希望分类器以更自然的方式使用它,正如 @lejlot 所说。
  • 没有“更自然”的方式来处理 NaN,因为它们不是自然的。 NaN 是“不是数字”,它们不存在于真正的数学中。它们是我们创建的一个构造,因此我们可以为奇怪的事物(例如除以零)提供返回值。为什么你的数据中有 NaN 是一个更大的问题,你应该关注什么。
  • 每当遇到 nan 时让 sklearn 返回 nan 会非常方便 - 将解释留给用户。
猜你喜欢
  • 2015-07-30
  • 2020-10-06
  • 2020-01-28
  • 2016-02-07
  • 2018-11-13
  • 2014-02-17
  • 2014-05-24
  • 2014-11-17
  • 2013-04-25
相关资源
最近更新 更多