0
点赞
收藏
分享

微信扫一扫

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异


sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异

  • ​​0 测试数据​​
  • ​​1 老版本​​
  • ​​2 新版本​​
  • ​​3 问题总结​​


知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息

0 测试数据

以简单的demo数据为例,如下

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_缺失值填充

1 老版本

sklearn的版本在0.20以下,安装的方式就为pip install scikit-learn==0.20.0,安装如下

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_sklearn_02


在老版本中使用缺失值处理的方式为Imputer,导入对应的函数和使用带的模块代码如下

import sklearn
sklearn.__version__

from sklearn.impute import SimpleImputer
import pandas as pd
import numpy as np
data = pd.read_excel(r'C:\Users\86177\Desktop\demo.xlsx')

输出结果如下(前两行就是用来核实当前使用的sklearn的版本,数据中李四的成绩缺失)

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_版本_03


替换的操作就是先指定替换的格式,这里是按照列以中位数的方式进行替换缺失值。axis=1,表示按照列,strategy表示填充的方式,missing_values表示缺失的数据

from sklearn.preprocessing import Imputer
Imp=Imputer(missing_values='NaN',strategy='median',axis=1)
new=Imp.fit_transform(data['成绩'].values.reshape(1,-1))
new

data['成绩'] = new.T
data

输出结果如下(输出提示Imputer在0.20版本后进行移除了,这里进行了一个输出提示,但是不影响当前版本的运算)

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_版本_04

2 新版本

安装指定版本1.x,比如这里安装1.0.2版本的scikit-learn,代码执行如下

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_缺失值填充_05


由于0.22版本后就移除了Imputer方法,这里使用的就是SimpleImputer,代码如下

imp_median = SimpleImputer(missing_values=np.nan,strategy="median")
new = imp_median.fit_transform(data['成绩'].values.reshape(-1,1))
new

data['成绩'] =

输出结果如下(需要注意,更改后SimpleImputer里面是有没有axis参数,所以这里进行替换的时候,数据的形状和原来不一样了,注意reshape括号中的内容)

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_版本_06

3 问题总结

老版本中可以通过axis参数指定是按照行还是按照列进行填充,但是新版本中删除了这个参数,默认的就是按照行进行列字段的缺失值填充,所以再使用新版本进行填充时需要把数据转化为多行数据(也就是这里的一个元素在一个中括号中),进一步可以通过reshape后的输出进行理解

new = data['成绩'].values.reshape(-1,1)
new

old = data['成绩'].values.reshape(1,-1)

输出结果如下

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_sklearn_07


核心: 两者的区别也就是传入到两个版本的数据的差别,一个以按照行进行列填充(所以就是多行一列),一个是可以自由指定,这里为了方便记忆,可以指定为按照列进行行填充(也就是一行多列)。

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_Imputer_08


举报

相关推荐

0 条评论