在sklearn的0.22以上版本的sklearn去除了Imputer类,我们可以使用SimpleImputer类代替。或者降级回版本sklearn 0.19
from sklearn.impute import SimpleImputer
#有如下的一些参数
sklearn.impute.SimpleImputer(
missing_values=nan,
strategy='mean',
fill_value=None,
verbose=0,
copy=True,
add_indicator=False
)[source]
imputer = SimpleImputer(missing_values=NA, strategy = "mean")
用上面那个代码就可以实现imputer的功能。其他的参数详解如下,具体的话大家去查阅sklearn库的说明。
- 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
- copy: boolean,default=True
True: 将创建X的副本;False: 只要有可能,就会原地替换。注意,一下情况即使copy=False,也会创建新的副本: - add_indicator: boolean,default=False
True,则MissingIndicator将叠加到输入器转换的输出上。这样即使进行了imputation归算,也同样会让预测估算器描述缺失值。如果某个特征在fit/train时没有缺失值,那么即使在transform/tes时有缺失值,该特征也不会出现在缺失的指示器上。
随着版本的更新,Imputer的输入方式也发生了变化,一开始的输入方式为
from sklearn.preprocessing import Imputer
imputer = Imputer(strategy='median')
现在需要对上面输入进行更新,输入变为
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy="median")
简单使用:
from sklearn.impute import SimpleImputer
import numpy as np
def im():
"""
缺失值处理
:return: None
"""
im1 = SimpleImputer(missing_values=np.nan, strategy='mean')
data = im1.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
print(data)
return None
if __name__ == "__main__":
im()