【Day09-填空】漏漏缺缺欠欠填填删删补补——面对缺失值的处理方式

昨天我们讲了在numpy中NaN要如何判断相等
那今天就来稍微谈一下会出现缺失值的那些情况要怎麽处理

基本上我们的处理方式不外乎两种——

填上资料

方法一:依靠统计值来填充

  • 最简单的填充方式
  • 常见的方法例如:
    • 平均值
    • 中位数
    • 内插值(适用连续资料中间缺失的情况)
  • 好处:统计值可以一定程度的代表这组资料的情况,适合用在资料平均随机缺失的情况
  • 坏处:
    • 可能会受到极端值影响,例如:我和郭台铭平均财富1000亿
    • 代表性可能不够,像是缺失值超过15%的时候可能就不适合以这种方式填入

而这边的统计值,也适用我们【Day02-尺度】40°C为什麽不是20°C的两倍的时候提到的尺度的概念哦(例如顺序、类别、名目尺度的就不适合用统计值来填充)

方法二:依靠模型预测

  • 基本上可以想像成在实际上训练模型去预测真正的Label之前,用其他的栏位来预测缺失那个区块
  • 常用的模型有:
    • KNN:用附近的值来做填充
    • RandomForest:简单直接
    • BayesModel:基於条件机率
  • 好处:填充的值不会太单一,适合用在缺失栏位和其他栏位有一定关系的情况
  • 坏处:
    • 不确定缺失的栏位和现存栏位之间的关系,可能会影响不同模型的效果
    • 具有缺失值的资料可能本身对於资料的预测能力就有一定程度的影响

方法三:引入dummy variable

  • 核心概念:将有/无缺失值的资料再透过一个变数来标记
  • 好处:对原始资料并无任何更动,适用填入任意值都可能影响原始资料意义的情况
  • 坏处:事实上也没有真的做填充,而是把判断的责任透过虚拟变数交给了後面的模型而已

方法四:人工再标注

  • 如果是可以再行标注的资料,则可以再透过人工的人工的方式来标注,或是自己上XD
  • 好处:如果这些资料可以事後重新再标注的话,这其实准确率可能会最高
  • 坏处:
    • 费时费力,效率底下
    • 如果是记录当下情况类型的资料可能也无法人工再标注

毕竟人工智慧的底层结构是工人智慧嘛(X

删除资料

  • 核心概念:解决不了问题,就解决掉看起来有问题的资料(?
  • 好处:因为没有填写,所以所有存在的资料都是真实的
  • 坏处:
    • 可能会删掉太多资料
    • 後续训练出来的模型面对真实情况的适应能力会比较低(毕竟都只看过理想的情况)

以上,就是今天简单对资料缺失值不同情况的简单介绍~


<<:  vok-orm 关联性资料的新增/查询 (下篇) + Vaadin 自订样式 - d09

>>:  [实例研究] car

[13th][Day5] 建立一个 daemon container

除了 交互式的 container(interactive container) 也能建立长期运行的...

.NET Core第25天_PartialTagHelper的使用_主检视传递资料(单一property跟整个物件)

在之前 .NET Core第13天_View常见操作_Layout布局页_PartialView部分...

Day25 [实作] 一对一视讯通话(5): 切换设备

如果我们的电脑有两个摄影机,就会有切换装置的需求,今天我们就来加入这个功能 在 index.html...

学习Python纪录Day12 - Python模组

Python模组 python模组就是单一python档案(.py档) 套件是一个目录中含有多个模组...

iOS APP 开发 OC 第十天,NSObject

tags: OC 30 day NSObject 是什麽? 是Foundation 框架中的类,在这...