机器学习基础篇-数据清洗

Capture 1

在机器学习的工作流中,数据清洗环节尤为重要。接下来首先让我们看一下数据预处理的流程图。
在这里插入图片描述
总的来说,主要包含下面三大块:

  • 收集数据
  • 标注数据
  • 提升数据质量

Capture 2

NO.1 Data Errors

所谓数据错误,就是你收集到的数据和实际的数据之间存在不一致。

  • 数据实际上是存在的,但是在数据表里是missing了
  • 数据的极值超出其所属的范围,例如房价不能小于0,但是在数据表却存在负数。

虽然数据存在存在错误无可避免,但是一个好的机器学习模型能够容忍这些错误的存在,同样能够训练+收敛。但是,通常计算出来结果的精度会比干净的数据低一些。
在实际项目中,如果我们不知道原本的数据能达到最好的效果是多少,这样子我们就没有衡量数据好坏的指标。但是呢,一个良好的数据质量能够训练出一个好的模型,在面对新的数据具有更强的泛化能力。

NO.2 Type of Data Errors

  • Outliers:离群点,即某些数据不在正常数据分布的范围内。
  • Rule violations:即某些数据不满足规则所规定的范围。比如说用ID必须是唯一的,但是存在重复;再比如说有些标签它是一个空值等等。
  • Pattern violations:即数据的格式,语法等等硬性表达方式不对。这种情况在程序运行时容易出现bug。比如你的数据格式是’xx-xx’,但是有些错误的格式是’xx@xx’;或者数值的类型不对应,如毫米mm替换成米m。

Outlier Detection
对于离群点,我们要分两种数据类型进行检测:

  • category feature:在面对类型特征时,我们会用
data[feats].value_counts()

即将类别特征里面所有的类别数据都打印出来,看看是否存在某些种类的数据是否过于稀疏,能否将这些稀疏的数据合并在一起处理(如下图中的某些种类的数据只有数十次的出现频次)。又或者某些种类的数据是否从属于某个大类,只是表达形式不一样(如下图中Single Family被划分了几种表达方式,但其实他们所要表达的意思是一样的,可以将其合并为一类)。
在这里插入图片描述

  • numerical feature:在面对数值特征时,我们会用
boxplot=df.boxplot()

即使用箱型图的方法,表达所有数据的分布情况。如下图所示,可以看到离群点数值都超出极值的1.5倍(这里的1.5倍的阈值可以根据实际情况而定)。
在这里插入图片描述

Rule-based Detection
对于规则类的检测,主要分为以下两大类:

  • Functional dependencies,即一个x总会对应一个唯一的y,比如说你的邮政编码能够一一对应你所处的地理位置。如果是一对多的情况,这时候就要检查数据是否存在依赖错误。如果不满足依赖条件,要么就把这条样本删掉,要么就手动fix。
  • Denial constraints,即根据一个规则或者函数function来约束数据。比如,如果你有家庭地址,那么就一定会有你个人的邮政编码;比如你指定了用户的ID是唯一的,如果出现了重复ID的情况,就考虑去掉重复样本。

Pattern-based Detection
对于模式类的检测,主要分类两大类:

  • Syntactic patterns,即语法模式,比如说某个特征的英文规定是大写,如果出现小写,就会有语义错误。再比如说规定整数型的数据,但是出现了float型,这时候就考虑拿掉或者手动fix。
  • Semantic patterns,语义模式,比如某列特征是首都,但是数据中存在某个乡镇的名称,这时候就会存在语义上的错误。

Summary

  • Type of errors: Outliers, rules violations, pattern violations.
  • 错误数据的检测方法:查看数据的分布,制定相应的规则或者语法来排查错误数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Wiggles

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值