我正在编写一个非常基本的程序,使用 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
答案 0 :(得分:25)
每the documentation,sklearn.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
变量