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读写ini配置文件方法实例分析
Jun 30 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
详解Python中的正则表达式
Jul 08 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
python获取响应某个字段值的3种实现方法
Apr 30 Python
Python timeit模块原理及使用方法
Oct 10 Python
Python之字符串的遍历的4种方式
Dec 08 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 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
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
PHP写日志的实现方法
2014/11/05 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
详解javascript遍历方式
2015/11/11 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
Python记录详细调用堆栈日志的方法
2015/05/05 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python 音频生成器的实现示例
2019/12/24 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
Django视图、传参和forms验证操作
2020/07/15 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
上班打牌检讨书
2014/02/07 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
党员政治学习材料
2014/05/14 职场文书
锦旗标语大全
2014/06/23 职场文书
质量主管工作职责
2014/09/26 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python