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聊天室实现方法
Jun 28 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
Python中的getopt函数使用详解
Jul 28 Python
Python 内置函数complex详解
Oct 23 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
用Django写天气预报查询网站
Oct 21 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
python的help函数如何使用
Jun 11 Python
python的链表基础知识点
Sep 13 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
用来给图片加水印的PHP类
2008/04/09 PHP
基于php split()函数的用法详解
2013/06/05 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
js 省地市级联选择
2010/02/07 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
批处理与python代码混合编程的方法
2016/05/19 Python
Python中取整的几种方法小结
2017/01/06 Python
一百多行python代码实现抢票助手
2018/09/25 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
先进集体获奖感言
2014/02/13 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python