【问题标题】:scikit learn imputing values other than NaNscikit 学习计算 NaN 以外的值
【发布时间】:2014-04-23 17:46:18
【问题描述】:

我正在尝试为代表矩阵中的空值的不同占位符估算值。例如,我想在任何时候估算一个值“?”存在于 numpy 2darray 中。

为此,我创建了一个Imputer,如下所示:

from sklearn import preprocessing
imputer = preprocessing.Imputer(missing_values="?", strategy='mean', axis=0, copy=False)
data = imputer.fit_transform(data)  

但我收到此错误:

/usr/local/lib/python2.7/dist-packages/sklearn/preprocessing/imputation.pyc in _get_mask(X, value_to_mask)
     27 def _get_mask(X, value_to_mask):
     28     """Compute the boolean mask X == missing_values."""
---> 29     if value_to_mask == "NaN" or np.isnan(value_to_mask):
     30         return np.isnan(X)
     31     else:

NotImplementedError: Not implemented for this type

我是否误解了 missing_values 可以设置的内容?

我的印象是它可以是任何字符串,而不仅仅是“NaN”,这是 scikit-learn 源似乎建议的。

【问题讨论】:

    标签: python numpy scikit-learn


    【解决方案1】:

    "integer or string" 类型的真正含义是“整数或字符串 'NaN'”。 fit/fit_transform 的输入应该仍然是数字。 ("NaN" 作为字符串传递的唯一原因是传递np.nan 会导致混乱的情况,因为它不等于自身,即np.nan == np.nan 的计算结果为False。)

    【讨论】:

      【解决方案2】:

      您使用的是哪个版本的 sklearn?
      从 0.20 开始不推荐使用 Imputer,您可以使用它来代替 - SimpleImputer

      from sklearn.impute import SimpleImputer
      imputer = SimpleImputer(missing_values=np.nan, strategy='mean', verbose=0)
      
      imputer = imputer.fit(X[:, 1:3])           # assume you want to impute 2 columns
      X[:, 1:3] = imputer.transform(X[:, 1:3])
      

      【讨论】:

        猜你喜欢
        • 2013-07-05
        • 2018-10-21
        • 2016-12-20
        • 1970-01-01
        • 2016-03-16
        • 2013-01-29
        • 1970-01-01
        • 2016-11-26
        • 2015-12-22
        相关资源
        最近更新 更多