python 缺失值处理的方法(Imputation)


Posted in Python onJuly 02, 2019

一、缺失值的处理方法

由于各种各样的原因,真实世界中的许多数据集都包含缺失数据,这些数据经常被编码成空格、nans或者是其他的占位符。但是这样的数据集并不能被scikit - learn算法兼容,因为大多数的学习算法都会默认数组中的元素都是数值,因此素偶有的元素都有自己的代表意义。

使用不完整的数据集的一个基本策略就是舍弃掉整行或者整列包含缺失值的数值,但是这样处理会浪费大量有价值的数据。下面是处理缺失值的常用方法:

1.忽略元组

当缺少类别标签时通常这样做(假定挖掘任务涉及分类时),除非元组有多个属性缺失值,否则该方法不是很有效。当每个属性缺少值的百分比变化很大时,它的性能特别差。

2.人工填写缺失值

一般该方法很费时,并且当数据集很大,缺少很多值时,该方法可能行不通。

3.使用一个全局常量填充缺失值

将缺失的属性值用同一个常数(如“Unknown”或 负无穷)替换。如果缺失值都用“unknown”替换,则挖掘程序可能会认为它们形成一个有趣的概念,因为它们都具有相同的值“unknown”。因此,虽然该方法很简单,但是它十分不可靠。

4.使用与给定元组属同一类的所有样本的属性均值

例如:将顾客按照credit_risk分类,则使用具有相同信用度的给定元组的顾客的平均收入替换income中的缺失值。

5.使用最可能的值填充缺失值

可以用回归、使用贝叶斯形式化的基于推理的工具或决策树归纳确定。例如,利用数据集中其他顾客的属性,可以构造一颗决策树来预测income的缺失值。

注意:缺失值并不总是意味着数据的错误!!!!!!!

二、缺失值处理的代码实现

class:`Imputer`类提供了缺失数值处理的基本策略,比如使用缺失数值所在行或列的均值、中位数、众数来替代缺失值。该类也兼容不同的缺失值编码。

1、使用均值填充缺失值

import numpy as np

from sklearn.preprocessing import Imputer

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)

import numpy as np

from sklearn.preprocessing import Imputer
 
###1.使用均值填充缺失值
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])


X = [[np.nan, 2], [6, np.nan], [7, 6]]
print(imp.transform(X)) 
[[4.     2.    ]
 [6.     3.66666667]
 [7.     6.    ]]

2、Imputer 类也支持稀疏矩阵:

import scipy.sparse as sp
 
X = sp.csc_matrix([[1, 2], [0, 3], [7, 6]])
 
imp = Imputer(missing_values=0, strategy='mean', axis=0)
 
imp.fit(X)
 
 
X_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]])
 
print(imp.transform(X_test))

#注意,在这里,缺失数据被编码为0, 这种方式用在当缺失数据比观察数据更多的情况时是非常合适的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python简明入门教程
Aug 04 Python
浅谈使用Python变量时要避免的3个错误
Oct 30 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
解决python "No module named pip" 的问题
Oct 13 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
python字符串反转的四种方法详解
Dec 02 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
Python常用外部指令执行代码实例
Nov 05 Python
Python 读取串口数据,动态绘图的示例
Jul 02 #Python
python中对数据进行各种排序的方法
Jul 02 #Python
Python虚拟环境的原理及使用详解
Jul 02 #Python
python输出电脑上所有的串口名的方法
Jul 02 #Python
如何更优雅地写python代码
Jul 02 #Python
Python pip替换为阿里源的方法步骤
Jul 02 #Python
python set内置函数的具体使用
Jul 02 #Python
You might like
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python中使用支持向量机(SVM)算法
2017/12/26 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
毕业设计说明书
2014/05/07 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python