zoukankan      html  css  js  c++  java
  • 如何处理数据中的缺失值

    作者:无影随想 
    时间:2016年1月。 
    出处:https://zhaokv.com/machine_learning/2016/01/missing-values.html
    声明:版权所有,转载请注明出处

    现实世界中的数据往往非常杂乱,未经处理的原始数据中某些属性数据缺失是经常出现的情况。另外,在做特征工程时经常会有些样本的某些特征无法求出。路漫漫其修远兮,数据还是要继续挖的,本文介绍几种处理数据中缺失值的主要方法。

    一、常用方法

    1. 删除

    最简单的方法是删除,删除属性或者删除样本。如果大部分样本该属性都缺失,这个属性能提供的信息有限,可以选择放弃使用该维属性;如果一个样本大部分属性缺失,可以选择放弃该样本。虽然这种方法简单,但只适用于数据集中缺失较少的情况。

    2. 统计填充

    对于缺失值的属性,尤其是数值类型的属性,根据所有样本关于这维属性的统计值对其进行填充,如使用平均数、中位数、众数、最大值、最小值等,具体选择哪种统计值需要具体问题具体分析。另外,如果有可用类别信息,还可以进行类内统计,比如身高,男性和女性的统计填充应该是不同的。

    3. 统一填充

    对于含缺失值的属性,把所有缺失值统一填充为自定义值,如何选择自定义值也需要具体问题具体分析。当然,如果有可用类别信息,也可以为不同类别分别进行统一填充。常用的统一填充值有:“空”、“0”、“正无穷”、“负无穷”等。

    4. 预测填充

    我们可以通过预测模型利用不存在缺失值的属性来预测缺失值,也就是先用预测模型把数据填充后再做进一步的工作,如统计、学习等。虽然这种方法比较复杂,但是最后得到的结果比较好。

    二、具体分析

    上面两次提到具体问题具体分析,为什么要具体问题具体分析呢?因为属性缺失有时并不意味着数据缺失,缺失本身是包含信息的,所以需要根据不同应用场景下缺失值可能包含的信息进行合理填充。下面通过一些例子来说明如何具体问题具体分析,仁者见仁智者见智,仅供参考:

    1. “年收入”:商品推荐场景下填充平均值,借贷额度场景下填充最小值;
    2. “行为时间点”:填充众数;
    3. “价格”:商品推荐场景下填充最小值,商品匹配场景下填充平均值;
    4. “人体寿命”:保险费用估计场景下填充最大值,人口估计场景下填充平均值;
    5. “驾龄”:没有填写这一项的用户可能是没有车,为它填充为0较为合理;
    6. ”本科毕业时间”:没有填写这一项的用户可能是没有上大学,为它填充正无穷比较合理;
    7. “婚姻状态”:没有填写这一项的用户可能对自己的隐私比较敏感,应单独设为一个分类,如已婚1、未婚0、未填-1。
  • 相关阅读:
    EM and GMM(Code)
    EM and GMM(Theory)
    安装Sphere v2.7 遇到的问题
    pyqt的 .ui 转换为 .py 后的操作注意事项
    SVM入门(一)
    关于范数的理解
    快速排序的C语言实现
    QT编程环境搭建
    flex布局左边固定,右边自适应,右边内容超出会影响布局
    未知宽高的div怎么垂直水平居中
  • 原文地址:https://www.cnblogs.com/zhaokui/p/5105322.html
Copyright © 2011-2022 走看看