slearn缺失值处理器之Imputer详析

目录
  • 参数:
  • 注意:
  • 所以在处理的时候注意,要进行适当处理
  • 补充:sklearn中的Imputer模块改动
  • 总结

class sklearn.preprocessing.Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)

参数:

  • missing_values: integer or “NaN”, optional (default=”NaN”)
  • strategy : string, optional (default=”mean”)
    • The imputation strategy.

      • If “mean”, then replace missing values using the mean along the axis. 使用平均值代替
      • If “median”, then replace missing values using the median along the axis.使用中值代替
      • If “most_frequent”, then replace missing using the most frequent value along the axis.使用众数代替,也就是出现次数最多的数
  • axis: 默认为 axis=0
    • axis = 0, 按列处理
    • aixs =1 , 按行处理

说实话,我还是没太弄明白aixs的具体含义,总感觉在不同的函数中有不同的含义。。还是使用前查找一下官方文档吧,毕竟大多数时候处理的都是2维数组,文档中的参数很容易理解。

注意:

  • Imputer 只接受DataFrame类型
  • Dataframe 中必须全部为数值属性

所以在处理的时候注意,要进行适当处理

数值属性的列较少,可以将数值属性的列取出来 单独取出来

import pandas as pd
import numpy as np

df=pd.DataFrame([["XXL", 8, "black", "class 1", 22],
["L", np.nan, "gray", "class 2", 20],
["XL", 10, "blue", "class 2", 19],
["M", np.nan, "orange", "class 1", 17],
["M", 11, "green", "class 3", np.nan],
["M", 7, "red", "class 1", 22]])

df.columns=["size", "price", "color", "class", "boh"]
print(df)
# out:
'''
  size  price   color    class   boh
0  XXL    8.0   black  class 1  22.0
1    L    NaN    gray  class 2  20.0
2   XL   10.0    blue  class 2  19.0
3    M    NaN  orange  class 1  17.0
4    M   11.0   green  class 3   NaN
5    M    7.0     red  class 1  22.0
'''
from sklearn.preprocessing import Imputer
# 1. 创建Imputer器
imp =Imputer(missing_values="NaN", strategy="mean",axis=0 )
# 先只将处理price列的数据, 注意使用的是   df[['price']]   这样返回的是一个DataFrame类型的数据!!!!
# 2. 使用fit_transform()函数即可完成缺失值填充了
df["price"]=imp.fit_transform(df[["price"]])
df
# out:
'''
   size	price	color	class	boh
0	XXL	8.0	black	class 1	22.0
1	L	9.0	gray	class 2	20.0
2	XL	10.0	blue	class 2	19.0
3	M	9.0	orange	class 1	17.0
4	M	11.0	green	class 3	NaN
5	M	7.0	red	class 1	22.0
'''

# 直接处理price和boh两列
df[['price', 'boh']] = imp.fit_transform(df[['price', 'boh']])
df
# out:
'''
size	price	color	class	boh
0	XXL	8.0	black	class 1	22.0
1	L	9.0	gray	class 2	20.0
2	XL	10.0	blue	class 2	19.0
3	M	9.0	orange	class 1	17.0
4	M	11.0	green	class 3	20.0
5	M	7.0	red	class 1	22.0
'''

数值属性的列较多,相反文本或分类属性(text and category attribute)较少,可以先删除文本属性,处理完以后再合并

from sklearn.preprocessing import Imputer
# 1.创建Iimputer
imputer = Imputer(strategy="median")
# 只有一个文本属性,故先去掉
housing_num = housing.drop("ocean_proximity", axis=1)
# 2. 使用fit_transform函数
X = imputer.fit_transform(housing_num)
# 返回的是一个numpyarray,要转化为DataFrame
housing_tr = pd.DataFrame(X, columns=housing_num.columns)

# 将文本属性值添加
housing_tr['ocean_proximity'] = housing["ocean_proximity"]

housing_tr[:2]
# out:
'''
    longitude	latitude	housing_median_age	total_rooms	total_bedrooms	population	households	median_income
0	-121.89 	37.29     	38.0  	              1568.0	    351.0	     710.0	     339.0	    2.7042
1	-121.93	    37.05   	14.0	              679.0	        108.0	     306.0   	113.0	   6.4214
'''

补充:sklearn中的Imputer模块改动

在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()

总结

到此这篇关于slearn缺失值处理器之Imputer的文章就介绍到这了,更多相关slearn缺失值处理器Imputer内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • slearn缺失值处理器之Imputer详析

    目录 参数: 注意: 所以在处理的时候注意,要进行适当处理 补充:sklearn中的Imputer模块改动 总结 class sklearn.preprocessing.Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True) 参数: missing_values: integer or “NaN”, optional (default=”NaN”) strategy : string, option

  • Python任务调度利器之APScheduler详解

    任务调度应用场景 所谓的任务调度是指安排任务的执行计划,即何时执行,怎么执行等.在现实项目中经常出现它们的身影:特别是数据类项目,比如实时统计每5分钟网站的访问量,就需要每5分钟定时从日志数据分析访问量. 总结下任务调度应用场景: 离线作业调度:按时间粒度执行某项任务 共享缓存更新:定时刷新缓存,如redis缓存:不同进程间的共享数据 任务调度工具 linux的crontab, 支持按照分钟/小时/天/月/周粒度,执行任务 java的Quartz windows的任务计划 本文介绍的是pytho

  • 关于Redis网络模型的源码详析

    前言 Redis的网络模型是基于I/O多路复用程序来实现的.源码中包含四种多路复用函数库epoll.select.evport.kqueue.在程序编译时会根据系统自动选择这四种库其中之一.下面以epoll为例,来分析Redis的I/O模块的源码. epoll系统调用方法 Redis网络事件处理模块的代码都是围绕epoll那三个系统方法来写的.先把这三个方法弄清楚,后面就不难了. epfd = epoll_create(1024); 创建epoll实例 参数:表示该 epoll 实例最多可监听的

  • nginx对http请求处理的各个阶段详析

    在编写nginx的http的模块的时候,需要在各个阶段对http请求做相应的处理,以达到不同的目的,比如请求发起的时候是否有访问权限.内容生成的时候进行过滤或者其它处理等等.如果在编译nginx模块内注册的处理阶段不正确会导致达不到想要的结果,比如你想处理内容的时候内容实际上这个时候是没有的,如此等等. 在nginx内部定义了多个阶段的类型以满足不同的处理要求(ngx_http_core_module.h中,不同版本不一样): typedef enum { NGX_HTTP_POST_READ_

  • MySQL排序原理和案例详析

    前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序.本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍与排序相关的参数,最后会给出几个"奇怪"排序例子,来谈谈排序一致性问题,并说明产生现象的本质原因. 1.排序优化与索引使用 为了优化SQL语句的排序性能,最好的情况是避免排序,合理利

  • mongodb中oplog介绍和格式详析

    目录 1. 基本概念 2. Oplog 的默认储存大小 3. 可能需要更大oplog的工作负载 4. Oplog状态 5. Oplog格式 6. CUD操作和Oplog的对应关系 delete操作 update操作 小结 总结 1. 基本概念 oplog使用固定大小集合记录了数据库中所有修改操作的操作日志(新增.修改和删除,无查询),mongodb收到修改请求后,先在主节点(Primary)执行请求,再把操作日志保存到oplog表中,其他从节点(Secondary)到主节点拉取oplog并在异步

  • GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析

    目录 前言 一.Axios 简介 二.HTTP 拦截器的设计与实现 2.1 拦截器简介 2.2 任务注册 2.3 任务编排 2.4 任务调度 三.HTTP 适配器的设计与实现 3.1 默认 HTTP 适配器 3.2 自定义适配器 四.CSRF 防御 4.1 CSRF 简介 4.2 CSRF 防御措施 4.2.1 检查 Referer 字段 4.2.2 同步表单 CSRF 校验 4.2.3 双重 Cookie 防御 4.3 Axios CSRF 防御 五.参考资源 总结 前言 Axios 是一个基

  • Python数据分析之缺失值检测与处理详解

    目录 检测缺失值 缺失值处理 删除缺失值 填补缺失值 检测缺失值 我们先创建一个带有缺失值的数据框(DataFrame). import pandas as pd df = pd.DataFrame( {'A': [None, 2, None, 4], 'B': [10, None, None, 40], 'C': [100, 200, None, 400], 'D': [None, 2000, 3000, None]}) df 数值类缺失值在 Pandas 中被显示为 NaN (Not A N

  • 关于JavaScript递归经典案例题详析

    目录 什么是递归,它是如何工作的? 一.求和 (1)数字求和 (2)数组求和 二.数据转树 三.汉诺塔 四.斐波那契数列 总结 什么是递归,它是如何工作的? 我们先来看一下递归(recursion)的定义: 递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用. 简单说程序调用自身的编程技巧叫递归.递归的思想是把一个大型复杂问题层层转化为一个与原问题规模更小的问题,问题被拆解成子问题后,递归调用继续进行,直到子问题无需进一步递归就可以解决的地步为止. 使用递归需要避免出现死循环,

  • 正则表达式详析+常用示例

    目录 一.正则的含义 二.正则表达式的应用场景 三.常用的格式校验 四.元字符 五.反义代码 六.限定符 七.分组匹配 八.贪婪与非贪婪 九.零宽断言 十.常用的实用正则表达式 一.正则的含义 正则表达式就是用来操作字符串的一种逻辑公式 二.正则表达式的应用场景 数据分析时数据获取的文本筛选 进行爬虫时,网页数据的匹配 写前端代码的时候,用户输入数据的验证 测试人员对请求结果的数据验证 批量文本编辑,比如Sublime Text或nodepad++.EditPlus等记事本软件全都支持正则表达式

随机推荐