报错记录:ValueError: Input contains NaN, infinity or a value too large for dtype(‘float32‘)

报错: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代表不在原数据集上修改,设置为False时,就地修改

上述解决办法中,是将缺失值替补成均值从而解决报错的

若继续报错:ImportError: cannot import name ‘Imputer’ from ‘sklearn.preprocessing’

首先检查自己的电脑是否pip install sklearn,如果已经安装,那么把上面的导包程序修改为

from sklearn.impute import SimpleImputer

若再继续报错:ValueError: setting an array element with a sequence.

矩阵的列没有对齐,一般情况用这个方法就行了:arrayname = np.concatenate(arrayname, axis=0) 。 arrayname是自己定义的矩阵名字

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页