我有一个 shape(10,3( 的数组,其中包含一些缺失值(nan(。我想用相应列的平均值替换缺失值。为此,我使用了SimpleImpueter。我的代码如下:
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = 'nan',strategy='mean')
此代码不起作用,并显示以下值错误:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
有什么办法可以克服这个问题吗?
如果你写imputer = SimpleImputer(missing_values = 'nan',strategy='mean')
,你实际上是在告诉scikit学会用列的平均值替换字符串'nan'
的所有出现。这不是您想要的,相反,您希望将np.nan
对象替换为平均值(恰好是默认值(。
因此,只需使用imputer = SimpleImputer(missing_values = np.nan,strategy='mean')
或
imputer = SimpleImputer(strategy='mean')
而是应该工作。