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 将字符串转换成字典dict
Mar 24 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
使用python为mysql实现restful接口
Jan 05 Python
opencv python 2D直方图的示例代码
Jul 20 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
在django admin中添加自定义视图的例子
Jul 26 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
Python函数__new__及__init__作用及区别解析
Aug 31 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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
php注入实例
2006/10/09 PHP
深入PHP许愿墙模块功能分析
2013/06/25 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP实现的简单缓存类
2015/07/29 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
bpython 功能强大的Python shell
2016/02/16 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
取保候审保证书
2014/04/30 职场文书
体操比赛口号
2014/06/10 职场文书
英语辞职信范文
2015/02/28 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android