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实现获取域名所用服务器的真实IP
Oct 25 Python
python中利用zfill方法自动给数字前面补0
Apr 10 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python变量的存储原理详解
Jul 10 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
django中cookiecutter的使用教程
Dec 03 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
利用Python演示数型数据结构的教程
2015/04/03 Python
Python中装饰器学习总结
2018/02/10 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
市场营销大学生职业规划书
2014/02/25 职场文书
优秀广告词大全
2014/03/19 职场文书
初中生期末评语大全
2014/04/24 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
MySQL的安装与配置详细教程
2021/06/26 MySQL
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL