机器学习实战 | 数据探索(缺失值处理)
点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接
接着上一篇:《机器学习实战-数据探索》介绍,机器学习更多内容可以关注github项目:machine learning(https://github.com/jacksu/machine-learning)
《机器学习实战-数据探索》介绍了1、变量识别;2、单变量分析;3、双变量分析,现在接着介绍缺失值处理。
为什么需要处理缺失值呢?
训练数据集中缺少的数据可以减少模型的拟合,或者可能导致模型偏差,因为没有正确地分析变量的行为和关系,可能导致错误的预测或分类。
Data_Exploration_2_11.png
注意上图中缺失值:在左侧的情况下,没有处理缺失值, 男性打板球的机会高于女性。 另一方面,如果看看第二个表,其中显示了处理缺失值后的数据(基于性别),我们可以看到女性与男性相比有较高的打板球的机会。
为什么会有缺失值呢?
前面说明了在数据集中处理缺失值的重要性, 现在来确定发生这些缺失值的原因,主要有以下两个阶段:
1、数据提取(Data Extraction)
提取过程可能有问题,在这种情况下,应该使用数据监护检查数据的准确性, 一些散列程序也可以用来确保数据提取的正确性,比较容易纠正(数据提取主要在NLP或者图像邻域,我现在理解不到位,后面补充)。
2、数据采集(Data collection)
数据采集时发生的错误,很难纠正,主要分为以下四种:
1、Missing completely at random
即所有观测值的缺失变量的概率相同。 例如:数据收集过程的受访者决定在抛出一个硬币后,宣布他们的收入。 如果发生,受访者宣布他的收入,反之亦然,这样,每个观察值,具有相同概率的缺失值。
2、Missing at random
即随机丢失变量概率,因其他输入变量的不同值或类别而变化。 例如:我们收集年龄,女性相比男性,具有较高的缺失值。
3、缺失值依赖于不可观察的预测变量
即缺失值不是随机的并且与未查看的输入变量相关。 例如:在一项医学研究中,如果特定诊断导致不适,那么研究中有更多的辍学机会。 这个缺失值不是随机的,除非我们将“不适”作为所有患者的输入变量。
4、缺失取决于缺失值本身
即缺失值的概率与缺失值本身直接相关。 例如:拥有较高或较低收入的人士,可能让其提供收入证明,有些不愿意。
缺失值有哪些处理方法呢?
1、删除
Data_Exploration_Missing_value
1、整条记录删除(list wise deletion)
删除任何变量丢失的观察结果,这种方法的主要优点之一是简单,但是这种方法降低了模型的准确性,因为它减少了样本大小。
2、删除对应的缺失值(In pair wise deletion)
这种方法的优点是,它保留了许多可用于分析的情况,缺点之一是对不同的变量使用不同的样本大小。
3、当缺失值为Missing completely at random,使用删除方法,否则可能会偏离模型输出。
2、Mean/Mode/Median估计
目标是使用可以在数据集的有效值中识别的已知关系来辅助估计缺失值。
Mean/Mode/Median是最常用的方法之一,包括通过该变量的所有已知值的mean或Median(定量属性)或Mode(定性属性)来替换给定属性的缺失数据,有以下两种方式:
1、广义插补(Generalized Imputation)
在这种情况下,我们计算该变量的所有非缺失值的mean或Median,然后用Mean或Median替换缺失值。 如上表所示,变量“人力”缺失值,取所有非缺失值的平均值(28.33)替换缺失值。
2、相似插补(Similar case Imputation)
如上表,分别计算性别“男性”(29.75)和“女性”(25)的平均值,然后根据性别替换缺失值,对于“男”的,以29.75代替缺失值,“女”的以“25”代替。
3、如果missing value占总体的比例非常小,那么直接填入Mean、Mode或者Median
3、预测模型(Prediction Model)
预测模型是处理缺失值的复杂方法之一, 通过创建一个预测模型来估计替代缺失值。 在这种情况下,我们将数据集分为两组:一组没有变量的缺失值,另一组有缺少值, 第一个数据集成为模型的训练数据集,而具有缺失值的第二个数据集是测试数据集,变量与缺失值被视为目标变量。 接下来,我们创建一个模型,根据训练数据集的其他属性预测目标变量,并填充测试数据集的缺失值。我们可以使用回归,方差分析,逻辑回归和各种建模技术来执行此操作。 这种方法有两个缺点:
模型估计值通常比真实值更好
如果与数据集中的属性和缺少值的属性没有关系,则该模型对于估计缺失值将不精确。
如果missing value所占比例不算小也不算大时,采用该方法。
4、KNN
此方法使用与值丢失的属性最相似的属性来估计属性的缺失值,通过距离函数确定两个属性的相似度。 具有如下优点和缺点:
优点
KNN可以预测定性和定量属性
不需要为缺少数据的每个属性创建预测模型
具有多个缺失值的属性可以轻松处理
数据的相关结构被考虑在内
缺点
KNN算法在分析大数据方面非常耗时, 搜索所有数据集,寻找最相似的实例。
k值的选择是非常关键的。 k较高脱显不了显著性属性,而较低的k会丢失重要属性。
注意: 如果missing value所占比例大,那么直接将miss value当做一种特殊的情况,另取一个值填入。
处理缺失值后,下一篇介绍异常值处理。
参考
https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/
原文链接:http://www.jianshu.com/p/945ea9b8303c
往期精彩回顾
TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络
装饰器 | Python高级编程
今天不如来复习下Python基础
点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接
机器学习实战 | 数据探索(缺失值处理)相关推荐
- 机器学习实战-数据探索(变量变换、生成)
原文链接:点击打开链接 <机器学习实战-数据探索(1.变量识别:2.单变量分析:3.双变量分析)> 机器学习实战-数据探索(缺失值处理) 机器学习实战-数据探索(异常值处理) 上面三篇文章 ...
- 机器学习实战 | 数据探索
点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 数据的输入质量决定了输出的最后结果,数据的探索.预处理.特征选择.降维等特征工程占了项目的70%的时间. ...
- 机器学习实战 | 数据探索(变量变换、生成)
点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 变量变换 1.1.什么是变量变换? 在数据建模中,变换是指通过函数替换变量. 例如,通过平方/立方根或对 ...
- 机器学习实战——数据探索之数据泄露(Data Leakage)
1.什么是数据泄露 数据科学的中的数据泄露(Data Leakage)和其他场合涉及信息安全的数据泄漏不一样,是指一些feature不是在因果关系上顺利释预测值的'因',而是预测值的'果',存在和利用 ...
- Kaggle泰坦尼克号数据机器学习实战:从缺失值处理、数据探索性分析、组合特征生成到多模型构建
Kaggle泰坦尼克号数据机器学习实战:从缺失值处理.数据探索性分析.组合特征生成到多模型构建 泰坦尼克号的沉没是历史上最为人熟知的海难事件之一. 1912 年 4 月 15 日,在她的处女航中,泰坦 ...
- Python机器学习之数据探索可视化库yellowbrick
背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plotly ...
- 机器学习之数据探索——数据特征分析(对比分析与统计量分析)
在数据探索工作中,作为数据特征分析的角度,对比分析.统计量分析同样是发掘数据间关系与数据特征的重要渠道. 1 对比分析 对比分析是指把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小, ...
- 数据科学-通过数据探索了解我们的特征
简介 对于数据科学而言,我们要做的第一件事情,必然是了解我们的数据.而在数据探索期间,pandas和matplotlib 则是我们进行数据探索的利器.本文主要分为三个部分,第一部分是利用pandas进 ...
- 天猫用户重复购买预测——数据探索
天猫用户重复购买预测--数据探索 1. 理论 1.1 缺失数据处理 1.2 不均衡样本 1.2.1 随机欠采样 1.2.2 随机过采样 1.2.3 基于聚类的过采样方法 1.2.4 SMOTE算法 1 ...
最新文章
- python检查目录是否存在,如果不存在则创建
- 思科将在网络中融入人工智能和机器学习
- Java 和 HTTP 的那些事(四) HTTPS 和 证书
- django查询表记录的十三种方法
- 以色列对话国际农民丰收节贸易会-万祥军:谋定无中生有
- 管理用户和PROFILE——管理用户——修改用户
- ASP.NET 实践:在非层次化控件中显示网站地图的数据
- oracle:时间数据的处理
- 利用scp在windows和linux之间进行文件和文件夹的数据拷贝
- Redis Lock
- arm汇编—str,mov等指令
- 爬取CSDN博客文章,统计文章历史数据
- 2021中青杯数学建模B题
- python自动生成sql建表语句
- 3.3V系统和5V系统电平转换
- Technorati 2008 年度博客状况报告(第一部分)
- 遇到U盘无法打开,属性显示0字节这样的问题?数据该如何导出?
- vue根据获取的文件名显示文件服务器上的图片
- 第四章第6节水管工游戏
- 数据库管理工具的使用
热门文章
- navigator工具_推荐!11个令人惊叹的前端开发工具,值得拥有
- html5双波浪线怎么添加,在WPS中如何给段落添加双波浪线边框
- mysql管理数据 并上传至云端_怎样将MySQL数据库上传到服务器
- elementui Cascader 省市区联动选择器,应用与回显
- java如何批量导入题目_MyBatis 如何批量插入?
- outlook阅读html,Outlook HTML邮件中英文混排字体设置
- 金蝶系统怎么清理服务器,【金蝶KIS专业版】如何注销加密服务器记录
- oracle11g 安装报告,[数据库]oracle11g的standby性能分析报告statpack安装_星空网
- 厦门大学计算机专业录取分数线2019,2019年厦门大学各省市各批次录取分数线公布【完整版】...
- python学习之模块--模块(五)