阅读 106

缺失值处理:SimpleImputer(简单易懂 + 超详细)

SimpleImputer参数详解

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

参数含义

  • missing_valuesint, float, str, (默认)np.nan或是None, 即缺失值是什么。

  • strategy:空值填充的策略,共四种选择(默认)meanmedianmost_frequentconstantmean表示该列的缺失值由该列的均值填充。median为中位数,most_frequent为众数。constant表示将空值填充为自定义的值,但这个自定义的值要通过fill_value来定义。

  • fill_valuestr数值,默认为Zone。当strategy == "constant"时,fill_value被用来替换所有出现的缺失值(missing_values)。fill_valueZone,当处理的是数值数据时,缺失值(missing_values)会替换为0,对于字符串或对象数据类型则替换为"missing_value" 这一字符串。

  • verboseint,(默认)0,控制imputer的冗长。

  • copyboolean,(默认)True,表示对数据的副本进行处理,False对数据原地修改。

  • add_indicatorboolean,(默认)FalseTrue则会在数据后面加入n列由01构成的同样大小的数据,0表示所在位置非缺失值,1表示所在位置为缺失值。


常用方法

fit(X)

返回值为SimpleImputer()类,通过fit(X)方法可以计算X矩阵的相关值的大小,以便填充其他缺失数据矩阵时进行使用。


transform(X)

填补缺失值,一般使用该方法前要先用fit()方法对矩阵进行处理。

from sklearn.impute import SimpleImputer import numpy as np X = np.array([[1, 2, 3],              [4, 5, 6],              [7, 8, 9]]) X1 = np.array([[1, 2, np.nan],                [4, np.nan, 6],                [np.nan, 8, 9]]) imp = SimpleImputer(missing_values=np.nan, strategy='mean') imp.fit(X) print(imp.transform(X1)) # 运行结果 [[1. 2. 6.]  [4. 5. 6.]  [4. 8. 9.]] 复制代码

由于fit(X)strategy='mean',所以填补值为X矩阵各列的均值。


fit_transform(X)

相当于fit() + transform(),一般使用的较多。

X1 = np.array([[1, 2, np.nan],                [4, np.nan, 6],                [np.nan, 8, 9]]) imp = SimpleImputer(missing_values=np.nan, strategy='mean') print(imp.fit_transform(X1)) # 运行结果 [[1.  2.  7.5]  [4.  5.  6. ]  [2.5 8.  9. ]] 复制代码


get_params()

获取SimpleImputer参数信息。

imp = SimpleImputer(missing_values=np.nan, strategy='mean') print(imp.get_params()) # 运行结果 {'add_indicator': False, 'copy': True, 'fill_value': None,  'missing_values': nan, 'strategy': 'mean', 'verbose': 0} 复制代码


inverse_transform(X)

将数据转换回原始的表示形式。反转对数组执行的转换操作。该操作只能在以add_indicator=True实例化simpleImputer后执行 注意:反变换只能在具有缺失值的二进制指示符的特征中进行反变换。如果一个特征在拟合时没有缺失值,那么该特征就没有二进制指标,变换时的赋值就不会被反向。简单说就是没有替换缺失值,就不存在还原。

X1 = np.array([[1, 2, np.nan],                [4, np.nan, 6],                [np.nan, 8, 9]]) imp = SimpleImputer(missing_values=np.nan, strategy='mean', add_indicator=True) X1 = imp.fit_transform(X1) print(X1) print(imp.inverse_transform(X1)) # 运行结果 [[1.  2.  7.5 0.  0.  1. ]  [4.  5.  6.  0.  1.  0. ]  [2.5 8.  9.  1.  0.  0. ]] [[ 1.  2. nan]  [ 4. nan  6.]  [nan  8.  9.]] 复制代码


自定义值填补

fill_value自定义。

X = np.array([[1, 2, 3],              [4, 5, 6],              [7, 8, 9]]) imp = SimpleImputer(missing_values=1, strategy='constant', fill_value=666) print(imp.fit_transform(X)) # 运行结果 [[666 2 3]  [4 5 6]  [7 8 9]] 复制代码

fill_value为默认值Zone

X = np.array([[1, 2, 3],              [4, 5, 6],              [7, 8, 9]]) imp = SimpleImputer(missing_values=1, strategy='constant', fill_value=None) print(imp.fit_transform(X)) # 运行结果 [[0 2 3]  [4 5 6]  [7 8 9]] 复制代码

对于刚入门 Python 或是想要入门 Python 的小伙伴,可以微信搜【Python新视野】,一起交流学习,都是从新手走过来的,有时候一个简单的问题卡很久,但可能别人的一点拨就会恍然大悟,由衷的希望大家能够共同进步。


作者:Dream丶Killer
链接:https://juejin.cn/post/7025196851749978125

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐