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 21 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
如何在python中使用selenium的示例
Dec 26 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 Python
python读写csv文件的方法
Aug 13 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
python 轮询执行某函数的2种方式
May 03 Python
python 实现汉诺塔游戏
Nov 28 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
Python 中 Shutil 模块详情
Nov 11 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 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
java模拟PHP的pack和unpack类
2016/04/13 PHP
jquery ui resizable bug解决方法
2010/10/26 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
js仿360开机效果
2019/12/26 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python之reload流程实例代码解析
2018/01/29 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
自我鉴定书范文
2013/10/02 职场文书
大学三年的自我评价
2013/12/25 职场文书
企业宣传策划方案
2014/05/29 职场文书
运动会宣传稿100字
2015/07/23 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书