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的正则表达式re模块的常用方法
Mar 09 Python
python实现代码行数统计示例分享
Feb 10 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
python MySQLdb使用教程详解
Mar 20 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
python实现年会抽奖程序
Jan 22 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
Js callBack 返回前一页的js方法
2008/11/30 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
js实现交通灯效果
2017/01/13 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
p5.js入门教程之图片加载
2018/03/20 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
用js编写留言板
2020/03/17 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
对python的文件内注释 help注释方法
2018/05/23 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
公积金单位接收函
2014/01/11 职场文书
工作评语大全
2014/04/26 职场文书
新农村建设标语
2014/06/24 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
还款承诺书范本
2015/01/20 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
给校长的建议书作文500字
2015/09/14 职场文书