本文共 1337 字,大约阅读时间需要 4 分钟。
数据清洗
文章目录
一.什么是数据清洗
我们在获得原始数据之后,并不是一股脑的把这些数据全都拿来使用,实际上,数据在整个机器学习阶段大致经历了这样一个流程:
(原始数据–>数据清洗(形成特征)–>数据预处理–>特征工程–>进入到模型进行训练)为什么要经历这个流程?原因在于,最开始获得的原始数据,往往存在这样那样的问题,比如说有缺失值,或者干脆就有错误的值,或者前后矛盾的值,前后格式不一致的值,对于这些值,肯定会对训练结果产生影响,进而产生错误。即使不存在上述问题了,数据当中也难免会出现很多的噪声。这些噪声 如果被训练的过多,也会成为过拟合的帮凶。
举个例子:我们假设有一个仪器,它专门检测汽车的尾气排放情况,但是由于仪器本身的缘故,在车子没有停稳的时候,经常会出现一些异常,比如说像下图这样:
那么很显然,那几个特别高耸的地方,就是出现了异常,数据清洗就是要把这些高耸的尖尖给去掉,形成下面这个样子:
关于数据清洗,他与数据预处理的界限其实很模糊。很多时候甚至分不清彼此,有些内容似乎跟特征工程也有一点重叠。因此,有不少资料甚至直接把这两个混为一谈。关于数据清洗,难以有一个准确的定义,在查到的,我认为比较好的定义应该是这样子:
数据清洗是将重复、多余的数据筛选清除,将缺失的数据补充完整,将错误的数据纠正或删除,最后整理成为我们可以进一步加工、使用的数据的过程
二.数据清洗的过程
根据查到的若干资料,数据清洗大致分为如下几个步骤:
(预处理–>缺失值处理–>格式统一化–>修正逻辑错误–>去除不需要的数据–>关联性验证)
2.1 预处理
比如说导入数据(可以爬虫,从数据库获取等等),然后粗略看一下这些数据,初步发现一些问题
2.2缺失值处理
我们在numpy当中学的dropna,replace方法等都是用来进行缺失值处理的工具。
对于缺失值,我们可以直接删除;可以用平均值,中位数等进行填充。也可以具体问题具体分析,比如说某个人的年龄缺失,但是他的个人信息里面却包含身份证号,那你大可以用身份证上的号来推算年龄进行填充。
2.3 格式统一化
比如说时间,有的格式是这个样子:2019-9-9,有的是这个样子:20190909。那么对于这种的,务必要统一成为一个格式,方便数据的提取和计算
2.4 修正逻辑错误
比如说,今年是2021年。我们在个人信息的 处理时,有个人的年龄是30岁,但是他的身份证号上生日字段却写着:……19500909……,71岁了,那么这显然前后矛盾,存在逻辑错误。对于这种的,往往要进行删除处理,或者把事情调查清楚了重新修正。
2.5 去除不需要的数据
比如说,我从商场获取数据,想要调查顾客的性别和买什么样子的商品之间是否存在关联。那么关于顾客的信息,你只需提取性别这个字段就可以了,其他的,什么这个顾客什么职业,几几年生的,这些东西在这个场景里面一概没有用。在处理的时候,直接无视就可以了。
2.6关联性验证
严格来说,这并不算是数据清洗。比如说,还是那个商场,我从他们内部的数据库进行数据处理得出了性别和所买商品的关系。然后,我从他们的客服部门的电话记录里面调集的信息,再进行相关调查,以此来判断信息是否准确。这便是关联性验证。
转载地址:https://blog.csdn.net/johnny_love_1968/article/details/116206248 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!