使用scikit-learn的Imputer模块预测缺失值

时间:2014-07-29 14:16:36

标签: python numpy scikit-learn prediction imputation

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

我制作了一个NumPy数组,用策略='意思是'创建了一个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

3 个答案:

答案 0 :(得分:25)

the documentationsklearn.preprocessing.Imputer.fit_transform返回一个新数组,它不会改变参数数组。因此,最小的修复是:

X = imp.fit_transform(X)

答案 1 :(得分:2)

因此,由于新数组是从transform函数返回的,因此我必须将其存储在同一数组(X)中以更改值

 from sklearn.preprocessing import Imputer
 imputer = Imputer(missing_values='NaN',strategy='mean',axis=0)  
 imputer = imputer.fit(X[:,1:3])
 X[:,1:3]= imputer.transform(X[:,1:3])

答案 2 :(得分:2)

scikit-learn 0.20 版本模块使用后已更改。因此,现在我们使用不当之类的东西;

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

注意:

使用 np.nan 代替'NaN'

不需要使用参数

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