18

我正在编写一个非常基本的程序来使用scikit-learn 的 Imputer类来预测数据集中的缺失值。

我制作了一个 NumPy 数组,创建了一个带有 strategy='mean' 的 Imputer 对象,并在 NumPy 数组上执行了 fit_transform() 。

当我在执行 fit_transform() 后打印数组时,'Nan' 仍然存在,我没有得到任何预测。

我在这里做错了什么?如何预测缺失值?

import numpy as np
from sklearn.preprocessing import Imputer

X = np.array([[23.56],[53.45],['NaN'],[44.44],[77.78],['NaN'],[234.44],[11.33],[79.87]])

print X

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit_transform(X)

print X
4

3 回答 3

27

Per the documentation, sklearn.preprocessing.Imputer.fit_transform returns a new array, it doesn't alter the argument array. The minimal fix is therefore:

X = imp.fit_transform(X)
于 2014-07-29T14:20:30.107 回答
8

scikit-learn 0.20 版之后,impute 模块的使用发生了变化。现在,我们可以使用 imputer 之类的;

from sklearn.impute import SimpleImputer
impute = SimpleImputer(missing_values=np.nan, strategy='mean')
impute.fit(X)
X=impute.transform(X)

注意:

代替'NaN',使用np.nan

不需要使用参数

我们可以使用impimputer代替我的impute变量

于 2019-12-21T12:58:29.013 回答
2

注意:由于 sklearn 库中的更改,“NaN”必须替换为 np.nan,如下所示。

 from sklearn.preprocessing import Imputer
 imputer = Imputer(missing_values= np.nan,strategy='mean',axis=0)  
 imputer = imputer.fit(X[:,1:3])
 X[:,1:3]= imputer.transform(X[:,1:3])
于 2018-08-17T18:09:25.257 回答