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算法应用实战之队列详解
Feb 04 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
python 反向输出字符串的方法
Jul 16 Python
python实现随机梯度下降法
Mar 24 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
Python基于Opencv识别两张相似图片
Apr 25 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绘制一个扇形的方法
2015/01/24 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
php可变长参数处理函数详解
2017/02/22 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
Vue实现简单分页器
2018/12/29 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
vue实现简易计算器功能
2021/01/20 Vue.js
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
详解python算法之冒泡排序
2019/03/05 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
高二美术教学反思
2014/01/14 职场文书
《燕子》教学反思
2014/02/18 职场文书
办公室副主任职责范本
2014/03/08 职场文书
房屋转让协议书
2014/04/11 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
交通安全温馨提示语
2015/07/14 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
如何在Python项目中引入日志
2021/05/31 Python