scikit学习除NaN以外的插补值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scikit学习除NaN以外的插补值相关的知识,希望对你有一定的参考价值。
我正在尝试为代表矩阵中空值的不同占位符插值。例如,我想在“?”时插入一个值存在于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来源所建议的。
答案
类型"integer or string"
的实际含义是“整数或字符串'NaN'
”。fit
/ fit_transform
的输入仍应为数字。 (将"NaN"
作为字符串传递的唯一原因是,传递np.nan
可能会导致混乱的情况,因为它不等于自身,即np.nan == np.nan
的值为False
。)
另一答案
您正在使用哪个版本的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])
以上是关于scikit学习除NaN以外的插补值的主要内容,如果未能解决你的问题,请参考以下文章