from sklearn.proprecessing import Imputer:sklearn库中找不到Imputer包问题-------SimpleImputer

一、背景

在解决ValueError: Input contains NaN, infinity or a value too large for dtype('float64').的问题时,也就是解决缺失值的时候,需要导入from sklearn.proprecessing import Imputer,也就是Imputer这个模块,但是运行时却又出来‘ModuleNotFoundError: No module named 'sklearn.proprecessing',后来通过百度,才知道原来0.22以上版本的sklearn去除了Imputer类。

from sklearn.proprecessing import Imputer:sklearn库中找不到Imputer包问题-------SimpleImputer_第1张图片二、解决方法

解决方法一:(建议)

0.22以上版本的sklearn去除了Imputer类,因此需要使用SimpleImputer类代替

库引用代码需改为:

from sklearn.impute import SimpleImputer

解决方法二:

将0.22版本的sklearn降低为0.19(此版本存在Imputer类)(不推荐)

三、SimpleImputer类参数

sklearn.impute.SimpleImputer(
		missing_values=nan,
		strategy='mean',
		fill_value=None,
		verbose=0,
		copy=True,
		add_indicator=False
)[source]

misssing_values: number,string,np.nan(default) or None,缺失值的占位符,所有出现的占位符都将被计算

strategy: string,default=‘mean’

计算并替换的策略:

"mean,使用该列的平均值替换缺失值。仅用于数值数据;

“median”,使用该列的中位数替换缺失值。仅用于数值数据;

“most_frequent”,使用每个列中最常见的值替换缺失值。可用于非数值数据;

“constant”,用fill_value替换缺失值。可用于非数值数据。

fill_value: string or numerical value,default=None

当strategy为"constant",使用fil_value替换missing_values。如果是default,使用0替换数值数据,使用"missing_value"替换字符串或对象数据类型

verbose: integer,default=0     controls the verbosity of the imputer

copy: boolean,default=True

True: 将创建X的副本;False: 只要有可能,就会原地替换。注意以下情况即使copy=False,也会创建新的副本:

1.X不是一个浮点值数组;

2.X编码为CSR矩阵;

3.add_indicator=True

add_indicator: boolean,default=False

True,则MissingIndicator将叠加到输入器转换的输出上。这样即使进行了imputation归算,也同样会让预测估算器描述缺失值。如果某个特征在fit/train时没有缺失值,那么即使在transform/tes时有缺失值,该特征也不会出现在缺失的指示器上。

你可能感兴趣的:(Python,机器学习,python)