背景:
在训练模型 fit(x_train,y_train) 时遇到报错 ValueError: Input contains NaN, infinity or a value too large for dtype('float32')
解决:
from sklearn.preprocessing import Imputer
df = Imputer().fit_transform(df)
其实我遇到这个报错主要由于我的数据当中有大量的缺失值,而sklearn.preprocessing.Imputer恰恰是填补缺失值的一个重要的方法,它的详细参数包括:
sklearn.preprocessing.Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)
参数说明:
missing_values:缺失值,可以为整数或NaN(缺失值numpy.nan用字符串‘NaN’表示),默认为NaN
strategy:替换策略,字符串,默认用均值‘mean’替换
①若为mean时,用特征列的均值替换
②若为median时,用特征列的中位数替换
③若为most_frequent时,用特征列的众数替换
axis:指定轴数,默认axis=0代表列,axis=1代表行
copy:设置为True代表不在原数据集上修改,设置为Fal