用scikit-learn输入法预测缺失值

2024-04-29 09:50:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我制作了一个NumPy数组,用strategy='mean'创建了一个输入对象,并对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

Tags: import程序numpynptransform数组scikitnan
3条回答

由于新数组是从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])

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

X = imp.fit_transform(X)

scikit learn version 0.20之后使用更改的输入模块。所以我们现在用的是不纯的

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

注意:

不使用“NaN”,而是使用“np.NaN”

不需要使用参数

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

相关问题 更多 >