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

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

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

手动反爬虫: 原博地址 https://blog.csdn.net/lys_828/article/details/124083243

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

0 测试数据

以简单的demo数据为例,如下
【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_第1张图片

1 老版本

sklearn的版本在0.20以下,安装的方式就为pip install scikit-learn==0.20.0,安装如下
【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_第2张图片
在老版本中使用缺失值处理的方式为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')
data

输出结果如下(前两行就是用来核实当前使用的sklearn的版本,数据中李四的成绩缺失)
【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_第3张图片
替换的操作就是先指定替换的格式,这里是按照列以中位数的方式进行替换缺失值。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处理缺失值差异_第4张图片

2 新版本

安装指定版本1.x,比如这里安装1.0.2版本的scikit-learn,代码执行如下
【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_第5张图片
由于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['成绩'] = new
data

输出结果如下(需要注意,更改后SimpleImputer里面是有没有axis参数,所以这里进行替换的时候,数据的形状和原来不一样了,注意reshape括号中的内容)
【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_第6张图片

3 问题总结

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

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

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

输出结果如下
【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_第7张图片
核心: 两者的区别也就是传入到两个版本的数据的差别,一个以按照行进行列填充(所以就是多行一列),一个是可以自由指定,这里为了方便记忆,可以指定为按照列进行行填充(也就是一行多列)。
【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_第8张图片

你可能感兴趣的:(各种问题解决,Imputer,SimpleImputer,缺失值填充,sklearn,版本)