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 基础学习第二弹 类属性和实例属性
Aug 27 Python
用python写的一个wordpress的采集程序
Feb 27 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
给 TensorFlow 变量进行赋值的方式
Feb 10 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
python自动化测试三部曲之unittest框架的实现
Oct 07 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
pytorch 6 batch_train 批训练操作
May 28 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 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函数
2008/10/03 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
利用json获取字符出现次数的代码
2012/03/22 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
C语言基础笔试题
2013/04/27 面试题
活动主持人开场白
2015/05/28 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python