数据清洗
发布日期:2021-07-03 20:40:35 浏览次数:1 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:回归补充(一)
下一篇:机器学习(十五)零碎和总结

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月04日 12时32分53秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java当前路径_java获取当前路径的几种方法 2019-04-21
java web传递参数_Javaweb的八种传值方式 2019-04-21
java gui支持的包有哪两个_Java GUI 2019-04-21
java list详解_java集合List解析 2019-04-21
java坐标代码_java实现计算地理坐标之间的距离 2019-04-21
kettle调用java程序_Kettle ETL调用 java代码来进行数据库的增删改查 2019-04-21
mysql 取两个时间差 php_在php和MySql中计算时间差的方法详解 2019-04-21
mysql 重启数据库实例_mysql 单机多实例重启数据库服务 2019-04-21
oracle12c order by,oracle 数据库中order by 的一些高级用法 2019-04-21
oracle8i substr,Oracle中的INSTR,NVL和SUBSTR函数的用法详解 2019-04-21
导出oracle11g的空表,轻松解决oracle11g 空表不能 exp 导出 的问题。 2019-04-21
php把整数拆分成数组,数组拆分处理(整数时的处理),该怎么处理 2019-04-21
oracle numlist,oracle sql str2numlist numtabletype 2019-04-21
php红包平均分配,红包平均分配算法 2019-04-21
linux磁盘的命令是,linux磁盘相关的命令 2019-04-21
linux服务器 缓存,Linux服务器内存使用分析及内存缓存 2019-04-21
linux查进程内存问题,关于linux 查看服务进程内存,cpu,内存占用的一些基础命令... 2019-04-21
linux英文包安装教程视频,Linux源码包安装过程讲解 2019-04-21
linux 关闭rsync服务器,linux下配置rsync服务器和实时同步 2019-04-21
linux初始化TCP服务失败,深入Linux系统追踪TCP初始化 2019-04-21