数据挖掘中的数据清洗方法大全

2023-11-09

作者:章华燕

编辑:黄俊嘉

在数据挖掘领域,经常会遇到的情况是挖掘出来的特征数据存在各种异常情况,如数据缺失 、数据值异常 等。对于这些情况,如果不加以处理,那么会直接影响到最终挖掘模型建立后的使用效果,甚至是使得最终的模型失效,任务失败。所以对于数据挖掘工程师来说,掌握必要的数据清洗方法是很有必要的!

接下来本文就依次讲解如何处理 

数据值缺失 和 数据值异常 

两种情况的处理。


1. 缺失值的处理

如下图所示,当我们在进行数据挖掘的过程中,往往会出现如下图所示的情况:某些样本的个别属性出现缺失的情况。

那么出现数据缺失的情况,我们应该怎么处理呢?


1.1 删除缺失值

当样本数很多的时候,并且出现缺失值的样本在整个的样本的比例相对较小,这种情况下,我们可以使用最简单有效的方法处理缺失值的情况。那就是将出现有缺失值的样本直接丢弃。这是一种很常用的策略。

缺点: 改变了样本的数据分布,并且对于缺失值过多的情况无法适用。


1.2 均值填补法

根据缺失值的属性相关系数最大的那个属性把数据分成几个组,然后分别计算每个组的均值,把这些均值放入到缺失的数值里面就可以了。

缺点: 改变了数据的分布,还有就是有的优化问题会对方差优化,这样会让对方差优化问题变得不准确。


1.3 热卡填补法

对于一个包含缺失值的变量,热卡填充法的做法是:在数据库中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。最常见的是使用相关系数矩阵来确定哪个变量(如变量Y)与缺失值所在变量(如变量X)最相关。然后把所有变量按Y的取值大小进行排序。那么变量X的缺失值就可以用排在缺失值前的那个个案的数据来代替了。

缺点: 太麻烦。与均值替换法相比,利用热卡填充法插补数据后,其变量的标准差与插补前比较接近。但在回归方程中,使用热卡填充法容易使得回归方程的误差增大,参数估计变得不稳定,而且这种方法使用不便,比较耗时。


1.4 最近距离决定填补法

假设现在为时间y,前一段时间为时间x,然后根据x的值去把y的值填补好。

缺点: 一般就是在时间因素决定不显著的时候,比如一天的气温,一般不会突然降到很低,然后第二天就升的很高。但是对时间影响比较大的,可能就不可以了。


1.5 回归填补法

假设我y属性存在部分缺失值,然后我知道x属性。然后我用回归方法对没有缺失的样本进行训练模型,再把这个值的x属性带进去,对这个y属性进行预测,然后填补到缺失处。当然,这里的x属性不一定是一个属性,也可以是一个属性组,这样能够减少单个属性与y属性之间的相关性影响。

缺点: 由于是根据x属性预测y属性,这样会让属性之间的相关性变大。这可能会影响最终模型的训练。


1.6 多重填补方法(M-试探法)

它是基于贝叶斯理论的基础上,然后用EM算法来实现对缺失值进行处理的算法。对每一个缺失值都给M个缺失值,这样数据集就会变成M个,然后用相同的方法对这M个样本集进行处理,得到M个处理结果,总和这M个结果,最终得到对目标变量的估计。其实这个方法很简单,就是我尽量多做模型,然后找出最好的,我就叫它M-试探法吧。


1.7 k-最近邻法

先根绝欧氏距离和马氏距离函数来确定具有缺失值数据最近的k个元祖,然后将这个k个值加权(权重一般是距离的比值吧)平均来估计缺失值。


1.8 有序最近邻法

这个方法是在K-最近邻法的基础上,根据属性的缺失率进行排序,从缺失率最小的进行填补。这样做的好处是讲算法处理后的数据也加入到对新的缺失值的计算中,这样即使丢了很多数据,依然会有很好的效果。在这里需要注意的是,欧式距离不考虑各个变量之间的相关性,这样可能会使缺失值的估计不是最佳的情况,所以一般都是用马氏距离进行最近邻法的计算。


1.9 基于贝叶斯的方法

就是分别将缺失的属性作为预测项,然后根据最简单的贝叶斯方法,对这个预测项进行预测。但是这个方法有一个缺点,就是说不能把之前的预测出来的数据加入到样本集,会丢失一些数据,会影响到预测。所以现在就是对属性值进行重要性排序,然后把重要的先预测出来,在加入新的数据集,再用新的数据集预测第二个重要的属性,这样一直处理到最后为止。


2. 异常值的检测与处理

未完待续

敬请期待

……



1.如果Boosting 你懂、那 Adaboost你懂么?

2.史上最透彻的KMP算法讲解

3.Logistic回归实战篇之预测病马死亡率(一)

4.Logistic回归实战篇之预测病马死亡率(三)



扫描个人微信号,

拉你进机器学习大牛群。

福利满满,名额已不多…

80%的AI从业者已关注我们微信公众号

       

       

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据挖掘中的数据清洗方法大全 的相关文章

  • IDEA报错程序包xxx不存在,但Depandencies依赖里明明有

    IDEA报错程序包xxx不存在 但依赖里明明有 看一下这个项目的pom xml 我这边引用的是公共依赖 应该是运行的时候依赖没有引用过来 搞了半天 网上搜了很多没搜到 后来我把 settings gt Runner 设置调了一下 就没有问题
  • CUDA之Warp Shuffle详解

    之前我们有介绍shared Memory对于提高性能的好处 在CC3 0以上 支持了shuffle指令 允许thread直接读其他thread的寄存器值 只要两个thread在 同一个warp中 这种比通过shared Memory进行th
  • Zabbix 学习(六) 自动发现功能与主动监控的实现

    一 自动发现 当被监控的设备非常多的时候 手工添加将会变得非常不方便 可以使用自动发现功能 实现添加主机 添加到主机组 链接模板 自动发现流程 创建自动发现规则 创建动作 当主机被发现之后 执行什么操作 通过动作 添加主机 将模板应用到发现
  • qt 实现翻金币游戏

    游戏玩法介绍 游戏设置关卡二十关 通过选关界面可以选择进入到对应的关卡中 进入对应关卡之后 点击任意金币 可以使该硬币以及周边 上 下 左 右 金边翻转 如果硬币都翻转为金币 则游戏胜利 游戏界面设置 开始界面 开始场景中需要自定义一个按钮
  • MyBatis实现简单的增删查改操作(XML配置)

    最近在跟着B站传智的课程学习SSM 先学的是MyBatis 写一篇博客记录一下如何利用MyBatis实现简单的增删查改 主要是记录一下实现过程 实现思路 注意事项 避坑 本教程使用XML配置进行实现 一 软件环境 Java IDEA mys
  • Windows下,Hexo+GitHub搭建博客

    一 注册GitHub账号 二 创建GitHub仓库 创建git仓库时候 仓库的名称有格式要求 例如我的GitHub仓库用户名是thinkerwalker 那么我创建的仓库名称就是thinkerwalker github io 此处的警告是因
  • 2D人体姿态估计 - Convolutional Pose Machines(CPM)

    https github com namedBen Convolutional Pose Machines Pytorch https github com timctho convolutional pose machines tenso
  • QFileDialog打开文件夹,获得文件名(getOpenFileName,getExistingDirectory)

    1 QFileDialog getOpenFileName 示例 括号里的参数分别是 指定父类窗口部件 对话框使用的标题 默认打开后显示的目录 即告诉它从哪一级目录开始 右下角的文件过滤器 QString file name QFileDi
  • MongoDB复制集数据是如何复制的

    MongoDB 复制集 MongoDB复制集的主要意义在于实现服务高可用 类似于Redis中的哨兵模式 它主要提供两个方面的功能 1 数据写入主节点 Primary 时将数据复制到另一个副本节 Secondary 点上 2 主节点发生故障时
  • Android UI 之居中绘制文本内容的正确方法——实现自定义一个TextView

    原文地址 http blog csdn net carrey1989 article details 10399727 我们在自定义一个控件的时候 有时候会需要自己来绘制一些文本内容 这样就自然而然遇到确定文本的方位的问题 比如文本需要水平
  • 蓝桥杯-最少砝码(2021题)

    问题描述 你有一架天平 现在你要设计一套砝码 使得利用这些砝码可以称出任意 小于等于 NN 的正整数重量 那么这套砝码最少需要包含多少个砝码 注意砝码可以放在天平两边 输入格式 输入包含一个正整数 N 输出格式 输出一个整数代表答案 样例输
  • Java实现Excel导入导出操作详解

    前言 本次封装是基于 POI 的二次开发 最终使用只需要调用一个工具类中的方法 就能满足业务中绝大部门的导入和导出需求 1 功能测试 1 1 测试准备 在做测试前 我们需要將 2 环境准备 中的四个文件拷贝在工程里 如 我这里均放在了com
  • AD20笔记-PCB设计

    AD20笔记 文章目录 AD20笔记 PCB设计 新建PCB 导入原理图元器件 估计板子的大小 隐藏网络 机械层绘制放置区域 设置原点 设置板子大小 层叠管理器 正片负片 模块化分布 导入DXF文件 单独查看某一层 相连走线选择 精准移位吸
  • 解析隐式类型转换操作operator double() const,带你了解隐式转换危害有多大

    目录 前言 隐式类型转换操作符 使用注意 解决方案 深思 构造函数造成的隐式转换 分析 总结 解决方案 explicit关键字 引入Proxy classes 代理类 总结 前言 我首次看到这种函数的时候是在Flightgear飞行模拟器的
  • scatter绘制散点图示例

    scatter绘制散点图示例 1 example 1 from sklearn import datasets digits datasets load digits import matplotlib pyplot as plt colo
  • Pytorch学习(6) —— 加载模型部分参数的用法

    上一节 我们给出了模型加载和保存的简要示例 但是 我们有时候会用别人的参数 他们的层参数名和我们的名称很容易不同 因此这里将会对源码进入深入剖析 分析参数提取和保存是如何实现的 我们使用pytorch的VGG16预训练模型 加载 返回其类型
  • 【云原生之kubernetes】helm在k8s集群中的基本使用

    云原生之kubernetes helm在k8s集群中的基本使用 一 检查kubernetes环境 1 检查kubernetes节点状态 2 检查helm状态 二 helm的V2版本和V3版本区别 1 主要区别 2 版本架构的变化 3 V3版
  • STM32写的PID算法温度控制程序示例

    使用STM32写的PID算法温度控制程序示例 该程序通过读取温度传感器的数据 并采用PID控制算法 输出PWM信号来控制加热器的工作 以实现温度的稳定控制 include stm32f10x h define TIM PERIOD Syst
  • C++和QML之间传输JSON字符串并解析(适用于传数组或其他复杂参数)

    QJsonObject转为QString 发送带此QString的信号 QML中接收到信号后直接用JSON进行解析 QML支持Javascript 自然也支持相应的json解析 同理 可以在QML中将javascript对象先转换成json
  • 这几款好用的数据分析软件推荐给你

    随着互联网和大数据时代的到来 数据分析已成为越来越多公司和个人必备的技能之一 而在进行数据分析时 一个好用 功能齐全的数据分析软件是至关重要的工具 在市场上 有很多不同的数据分析软件可供选择 但其中哪些才是最好的呢 今天我将向大家介绍几款我

随机推荐

  • 手撸代码-链表中的节点每k个一组翻转-牛客

    描述 将给出的链表中的节点每 k k 个一组翻转 返回翻转后的链表 如果链表中的节点数不是 k k 的倍数 将最后剩下的节点保持原样 你不能更改节点中的值 只能更改节点本身 要求空间复杂度 O 1 O 1 例如 给定的链表是1 2 3 4
  • JQuery的链式编程与隐式迭代

  • 华为OD机试真题-投篮大赛【2023.Q1】

    题目内容 你现在是一场采用特殊赛制投篮大赛的记录员 这场比赛由若干回合组成 过去几回合的得分可能会影响以后几回合的得分 比赛开始时 记录是空白的 你会得到一个记录操作的字符串列表 ops 其中ops i 是你需要记录的第i项操作 ops遵循
  • pytorch中一维卷积Conv1d简介

    最近在使用pytorch中的一维卷积来对文本进行处理 进行文本分类任务 查阅了网上相关的博客还有api这里做一个总结 一维卷积 顾名思义就是在一维空间上进行卷积 通常用来处理时序的数据 卷积的过程如下图 进行卷积的数据形状为 batch s
  • IntelliJ IDEA 使用教程

    一 设置入口 1 快捷键 Ctrl Alt S 2 File gt Settings 3 View gt appearance gt Toolbar 单击选中 出现工具栏图标 以后可直接点击它进入设置界面 之后的相关设置后 请点击Apply
  • 列车调度问题PTA

    7 20 列车调度 25 分 火车站的列车调度铁轨的结构如下图所示 两端分别是一条入口 Entrance 轨道和一条出口 Exit 轨道 它们之间有N条平行的轨道 每趟列车从入口可以选择任意一条轨道进入 最后从出口离开 在图中有9趟列车 在
  • Python 正则表达式(完整)-------附LeetCode真题详细解析

    正则表达式 又称规则表达式 Regular Expression 在代码中常简写为regex regexp或RE 是一种文本模式 包括普通字符 例如 a 到 z 之间的字母 和特殊字符 称为 元字符 是计算机科学的一个概念 正则表达式使用单
  • pread

    pread is a system call in Linux that allows reading data from a file descriptor at a specified offset without changing t
  • 面试经典(24)--二叉搜索树和双向链表

    题目描述 输入一棵二叉搜索树 将该二叉搜索树转换成一个排序的双向链表 算法分析 使用后续遍历方法 从10节点开始分析 只要左子树返回最大节点 右子树返回最小节点即可 正常递归无法判定当前是左子树还是右子树 所以参数要假如bool值判定左右子
  • Jmeter教程(二) - 自定义变量模拟多用户

    Jmeter教程 一 入门 Jmeter教程 二 自定义变量模拟多用户 Jmeter教程 三 Linux中使用命令行进行压测 在上一篇文章 Jmeter教程 一 入门 中介绍了Jmeter的基本用法 本文会继续介绍如何使用Jmeter对一个
  • 使用SpringSecurity,Jwt与Redis实现用户认证与授权

    spring security是spring官方比较推荐的用于认证和权限的解决方案 本次将围绕spring security的认证授权 jwt进行学习分享 1 依赖的引入
  • OpenMMLab AI实战营笔记-1

    OpenMMLab AI实战营笔记 1 第一课目录 OpenMMLab AI实战营笔记 1 OpenMMLab简介 安装教程 先安装Pytorch 安装mmcv 安装mmcv lite 安装完成 OpenMMLab简介 OpenMMLab是
  • Linux多线程编程三(互斥锁)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在线程实际运行过程中 我们经常需要多个线程保持同步 这时可以用互斥锁来完成任务 互斥锁的使用过程中 主要有pthread mutex init pthread mutex
  • mui.ajax php,求助!!!关于mui ajax获取不到后台数据

    js代码如下 mui ajax ajax php dataType json 服务器返回json格式数据 type post HTTP请求类型 headers Content Type application json success fu
  • 几种炫酷的加载动画

    动画一 An highlighted block
  • Typora常用快捷键

    Typora常用快捷键 Ctrl 1 一级标题 Ctrl 2 二级标题 Ctrl 3 三级标题 Ctrl 4 四级标题 Ctrl 5 五级标题 Ctrl 6 六级标题 Ctrl 0 段落 Ctrl 提升标题等级 Ctrl 降低标题等级 Ct
  • 什么是微服务?

    什么是微服务 微服务架构风格这种开发方法 是以开发一组小型服务的方式来开发一个独立的应用系统的 其中每个小型服务都运行在自己的进程中 并经常采用HTTP资源API这样轻量的机制来相互通信 这些服务围绕业务功能进行构建 并能通过全自动的部署机
  • 【点云处理技术之PCL】滤波器——直通滤波器(pcl::PassThrough)

    直通滤波器 是直接根据滤波器设定的条件 选择自己所需点云 可以选择保留设定范围内的点云 也可以选择滤除设定范围内的点云 保留或者滤出是由setFilterLimitsNegative进行模式开关的 代码中 设定z轴的条件 保留z方向范围 0
  • python pool.map 多线程 多参数

    python pool map 多线程 多参数 pool map默认只能传入一个参数 包上一个lambda分发参数 即可解决多参数传入问题 from multiprocessing import Pool from multiprocess
  • 数据挖掘中的数据清洗方法大全

    作者 章华燕 编辑 黄俊嘉 在数据挖掘领域 经常会遇到的情况是挖掘出来的特征数据存在各种异常情况 如数据缺失 数据值异常 等 对于这些情况 如果不加以处理 那么会直接影响到最终挖掘模型建立后的使用效果 甚至是使得最终的模型失效 任务失败 所