转自:https://blog.csdn.net/jiazericky/article/details/80322225

在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理;分别是缺失值(missing value),异常值(离群点),去重处理(Duplicate Data)以及噪音数据的处理。

1. 探索性分析

探索性分析部分,对于整个数据来讲是获得对数据一个初步的认识以及对先验知识的一个探索分析过程,在我做相关数据挖掘的过程中,主要是利用python相关的科学计算库进行数据初步的探索,例如数据类型,缺失值,数据集规模,各特征下的数据分布情况等,并利用第三方绘图库进行直观的观察,以获取数据的基本属性与分布情况,另外,通过单变量分析与多变量分析,可以初步探索数据集中各特征之间的关系,以验证在业务分析阶段所提出的假设。

2. 缺失值

数据集中缺失值的获取方法可以直接通过pandas的自带的多种方法获取,在大多数数据集中缺失值都普遍会存在,因此,对于缺失值的处理好坏会直接影响到模型的最终结果。如何处理缺失值,主要依据在缺失值所在属性的重要程度以及缺失值的分布情况。

①.在缺失率少且属性重要程度低的情况下,若属性为数值型数据则根据数据分布情况简单的填充即可,例如:若数据分布均匀,则使用均值对数据进行填充即可;若数据分布倾斜,使用中位数填充即可。若属性为类别属性,则可以用一个全局常量‘Unknow’填充,但是,这样做往往效果很差,因为算法可能会将其识别为一个全新的类别,因此很少使用。

②.当缺失率高(>95%)且属性重要程度低时,直接删除该属性即可。然而在缺失值高且属性程度较高时,直接删除该属性对于算法的结果会造成很不好的影响。

③.缺失值高,属性重要程度高:主要使用的方法有插补法与建模法

(1)插补法主要有随机插补法,多重插补法,热平台插补法,以及拉格朗日插值法与牛顿插值法

1>随机插补法--从总体中随机抽取某几个样本代替缺失样本

2>多重插补法--通过变量之间的关系对缺失数据进行预测,利用蒙特卡洛方法生成多个完整的数据集,在对这些数据集进行分析,最后对分析结果进行汇总处理

3>热平台插补----指在非缺失数据集中找到一个与缺失值所在样本相似的样本(匹配样本),利用其中的观测值对缺失值进行插补。

  优点:简单易行,准确率较高

  缺点:变量数量较多时,通常很难找到与需要插补样本完全相同的样本。但我们可以按照某些变量将数据分层,在层中对缺失值实用均值插补

4>拉格朗日差值法和牛顿插值法

(2)建模法

可以用回归、贝叶斯、随机森林、决策树等模型对缺失数据进行预测。例如:利用数据集中其他数据的属性,可以构造一棵判定树,来预测缺失值的值。

一般而言,数据缺失值的处理没有统一的流程,必须根据实际数据的分布情况,倾斜程度,缺失值所占比例等来选择方法。在我做数据预处理过程中,除了使用简单的填充法外与删除外,更多情况下采用建模法进行填充,主要在于建模法根据已有的值去预测未知值,准确率较高。但建模法也可能造成属性之间的相关性变大,可能影响最终模型的训练。

3. 异常值(离群点)

判断离群点除了可视化分析外(一般箱线图),还有很多基于统计背景下的方法,且可视化观察不适合用数据量较多的情况。

3.1 简单的统计分析

这一步在EDA中完成,只需要利用pandas的describe方法就可以实现,通过数据集描述性统计,发现是否存在不合理的值,即异常值

3.2 3∂原则--基于正态分布的离群点检测

如果数据服从正态分布,在3∂原则下,异常值为一组测定值中与平均值的偏差超过3倍标准差的值。如果数据服从正态分布,距离平均值3∂之外的值出现的概率为P(|x-u| > 3∂) <= 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。

3.3 基于模型检测

首先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇的集合,则异常是不显著属于任何簇的对象;在使用回归模型时,异常是相对远离预测值的对象

3.4 基于距离

通过在对象之间定义临近性度量,异常对象是那些远离其它对象的对象

优点:简单易操作

缺点:时间复杂度为O(m^2),不适用于大数据集情况,参数选择较为敏感,不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化

3.5 基于密度

当一个点的局部密度显著低于它的大部分近邻时才将其分类为离群点。适合非均匀分布的数据。

优点:给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理

缺点:时间复杂度O(m^2);参数选择困难,虽然算法通过观察不同的k值,取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。

3.6 基于聚类

基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇。离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类。

优点:

① 基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的    ② 簇的定义通常是离群点的补,因此可能同时发现簇和离群点

缺点:

③ 产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性

④ 聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大

处理异常点的方法:

1>删除异常值----明显看出是异常且数量较少可以直接删除

2>不处理---如果算法对异常值不敏感则可以不处理,但如果算法对异常值敏感,则最好不要用这种方法,如基于距离计算的一些算法,包括kmeans,knn之类的。

3>平均值替代----损失信息小,简单高效。

4>视为缺失值----可以按照处理缺失值的方法来处理

4. 去重处理

对于重复项的判断,基本思想是“排序与合并”,先将数据集中的记录按一定规则排序,然后通过比较邻近记录是否相似来检测记录是否重复。这里面其实包含了两个操作,一是排序,二是计算相似度。目前在做竞赛过程中主要是用duplicated方法进行判断,然后将重复的样本进行简单的删除处理。

这块目前看到的博客与国外一些比赛的案例基本都采用直接删除进行处理,没有看到过比较有新意的方法。

5. 噪音处理

噪音是被测变量的随机误差或者方差,主要区别于离群点。由公式:观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise)。离群点属于观测量,既有可能是真实数据产生的,也有可能是噪声带来的,但是总的来说是和大部分观测量之间有明显不同的观测值。噪音包括错误值或偏离期望的孤立点值,但也不能说噪声点包含离群点,虽然大部分数据挖掘方法都将离群点视为噪声或异常而丢弃。然而,在一些应用(例如:欺诈检测),会针对离群点做离群点分析或异常挖掘。而且有些点在局部是属于离群点,但从全局看是正常的。

对于噪音的处理主要采用分箱法于回归法进行处理:

(1) 分箱法:

分箱方法通过考察数据的“近邻”来光滑有序数据值。这些有序的值被分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此它进行局部光滑。

l 用箱均值光滑:箱中每一个值被箱中的平均值替换。

l 用箱中位数平滑:箱中的每一个值被箱中的中位数替换。

l 用箱边界平滑:箱中的最大和最小值同样被视为边界。箱中的每一个值被最近的边界值替换。

一般而言,宽度越大,光滑效果越明显。箱也可以是等宽的,其中每个箱值的区间范围是个常量。分箱也可以作为一种离散化技术使用.

(2) 回归法

可以用一个函数拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”直线,使得一个属性能够预测另一个。多线性回归是线性回归的扩展,它涉及多于两个属性,并且数据拟合到一个多维面。使用回归,找出适合数据的数学方程式,能够帮助消除噪声
--------------------- 
作者:jiazericky 
来源:CSDN 
原文:https://blog.csdn.net/jiazericky/article/details/80322225 
版权声明:本文为博主原创文章,转载请附上博文链接!

机器学习-数据挖掘中常用的数据清洗方法相关推荐

  1. 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法

    是新朋友吗?记得先点蓝字关注我哦- 数据挖掘中 常用的数据清洗方法 在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理,分别是缺失值(missing va ...

  2. 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法有哪些?

    数据清洗是将重复.多余的数据筛选清除,将缺失的数据补充完整,将错误的数据纠正或者删除,最后整理成为我们可以进一步加工.使用的数据. 所谓的数据清洗,也就是ETL处理,包含抽取Extract.转换Tra ...

  3. 数据挖掘中常用的数据清洗方法有哪些?

    原文来自:https://www.zhihu.com/question/22077960/answer/24095218 从两个角度上看,数据清洗一是为了解决数据质量问题,二是让数据更适合做挖掘.不同 ...

  4. 数据挖掘中常用的数据清洗方法

    在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理:分别是缺失值(missing value),异常值(离群点),去重处理(Duplicate Data) ...

  5. 机器学习中常用的优化方法

    写在前面 在看斯坦福的次cs231n课程,里面提到一些机器学习的基础知识,比如损失函数,优化算法,正则化形式等等.然后有一些知识也都记不起来了,索性就在博客上再回顾一遍顺便记录下来日后方便查阅.今天就 ...

  6. 统计计量 | 统计学中常用的数据分析方法汇总

    来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...

  7. 使用python进行数据清洗常用的库_python3常用的数据清洗方法(小结)

    首先载入各种包: import pandas as pd import numpy as np from collections import Counter from sklearn import ...

  8. Python常用的数据清洗方法

    Python常用的数据清洗方法 在数据处理的过程中,一般都需要进行数据的清洗工作,如数据集是否存在重复.是否存在缺失.数据是否具有完整性和一致性.数据中是否存在异常值等.当发现数据中存在如上可能的问题 ...

  9. Python数据清洗 | 常用的数据清洗方法

    常用的数据清洗方法 本文首发于微信公众号<Python希望社>,欢迎关注,完整详细的原文链接请点击这里 在数据处理的过程中,一般都需要进行数据的清洗工作,如数据集是否存在重复.是否存在确实 ...

最新文章

  1. MySQL写十行_python 十行代码系列(四):操作mysql插入测试数据
  2. mysql数据库自动转储_mysql数据库数据定时封装转储
  3. python调用c++动态库_Python调用C/C++动态链接库的方法
  4. 深度学习语义分割理论与实战指南.pdf
  5. 绵阳市公文写作和计算机应用,【绵阳】绵阳市事业单位公开招聘工作人员公文写作和计算机应用笔试和复习大纲...
  6. Android 数据库 SQLite
  7. gorm bool 指针 不更新_百度网盘不限速BaiduPCS-Go for Mac
  8. 如何快速学习Java? 1
  9. Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案
  10. Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)
  11. 去除wmv等视频认证的方法
  12. 手机也能实时查看开关门状态?Zigbee 智慧厕所门亮了
  13. 一.office-Word2010 办公常用功能操作教程
  14. 计算机网络安全文明知识竞赛,网络安全知识竞赛
  15. G: LZY的计算器
  16. Tableau 实现percentile分类计算功能
  17. 微信公众号数据2019_2019年微信公众号文章数据报告
  18. 网易云短信接口调入(java)
  19. Oracle/PLSQL登录oracle时出现 ORA-12638 Credential retrieval failed错误
  20. 知乎爬虫逻辑的实现以及answer的提取

热门文章

  1. 中文智能写作 软件推荐
  2. 域控服务器怎么用,怎样搭建域控服务器配置
  3. 华为P6刷机包 移动版 基于EmotionUI B508适配 MIUI V5 4.9.22发布 更新优化
  4. 硬盘在计算机内部,计算机硬盘内部结构如图所示,读写磁头在计算机的指令下移动到某个位置,硬盘盘面在电机的带动下......
  5. php股票价格实时刷新,使用ajax技术无刷新动态调用新浪股票实时数据
  6. SpringMvc 之MockMvc的使用方法
  7. 干货分享|纯CSS绘制电池充电水波纹动效(uni-app|view组件版)
  8. ThinkPHP5聚合数据短信验证码接口实现注册/忘记密码功能
  9. jquer使用 $.parseJSON 使用方法
  10. eolinker搭建(Linux版)