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

2023-11-08

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.
  • 错误数据的检测方法:查看数据的分布,制定相应的规则或者语法来排查错误数据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习基础篇-数据清洗 的相关文章

  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图

随机推荐

  • 机器学习之电子商务网站用户行为分析及服务推荐案例

    项目概述 本项目案例根据某法律咨询服务网站的用户浏览记录 把用户划分为训练集的用户和测试集的用户 再根据找出相应用户的浏览记录划分为训练集数据和测试集数据 训练集用于后续构建用户物品矩阵 再根据用户物品矩阵构建物品相似度矩阵 根据杰卡德相似
  • js实现将字符串里包含手机号的中间四位替换为****

    var character sd13564349471中 字符 1 判断该字符串里是否包含数字 function getNum text var value text replace 0 9 ig return value 2 if包含数字
  • 外网访问VMware虚拟机

    目的 主机上安装了VMware VMware上安装了Linux虚拟机 我安装的是Centos7 我想让虚拟机向外提供Web服务 本文记录如何让我的主机和外网用户可以访问VM虚拟机上的Web 网络环境 单IP服务器1台 提供固定IP1个 固定
  • java 私有云_基于MOS9.0的OpenStack私有云部署

    本手册中私有云部署操作是在完成Mos9 0源搭建的基础上 如果没有可用的Mos9 0源 fuel 请先完成Mos9 0源的搭建 一 网络环境要求 1 1网络清单 序号 网络名称 用途 1 PXE网络 用于OpenStack集群中其他节点从m
  • [转]QNX与Linux OS比较优劣-QNX与Linux两家未来有望独霸车载电子操作系统

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 车载电子操作系
  • 密码学与网络安全笔记整理-数据完整性技术

    1 数据完整性 类似于通信中的校验码功能 在密码学领域数据完整性用于验证收到信息的正确性 校验收到的信息是否经过篡改 校验收到的信息是真实的发送者发送而非伪造 发送者通过编码为消息增加一些 冗余 生成一个校验值 并将该校验值附在消息之后 接
  • 基于深度学习的DDN图像去雨算法实战准备指南

    一 DDN图像去雨算法的复现代码下载 1 DDN的图像去雨算法的代码分为tensorflow版本和matlab版本 下载的链接分别如下 1 DDN tensorflow下载 https download csdn net download
  • border-box和content-box最直观的区别和解释

    Chrome浏览器box sizing默认是content box content box就是元素的width和height决定了元素的宽高 这意味着元素的border和padding等不能算在元素的width和height中 paddin
  • python怎么用for循环找出最大值_用for循环语句写一个在输入的十个数字中求最大和最小值的python程序应该怎么写?...

    在输入的十个数字中求最大和最小值的 python 代码 这个需求 在不同时间来看 解题思路不同 所需要的 python 知识点不同 作为萌新的我 为此特意整理了 3 种解法 以及相应的知识点笔记 解法A 不使用列表 min 或 max 只是
  • 笔记:Element UI Dialog弹框 水平垂直居中

    需求 element dialog 默认不是水平居中的 需要改为水平垂直居中 方法一 全局设置 在App vue中添加代码 全局设置 element ui dialog水平垂直居中 el dialog left 50 top 50 tran
  • 超全超详细的安装nvidia显卡驱动教程

    最近想做的事情有点多 感觉卡不够用了 师兄不知道在实验室机房哪个地方找了一个两卡的废旧服务器 开始上手才发现服务器显卡驱动都没装 显卡还是个GTX1060 6G 甜点级别显卡 跑点小东西玩玩 打点小比赛行了 准备工作 安装驱动 1 使用标准
  • udp包最大数据长度是多少

    原文地址 https blog csdn net caoshangpa article details 51530685 每个udp包的最大大小是多少 65507 约等于 64K 为什么最大是65507 因为udp包头有2个byte用于记录
  • 谷粒商城(一)

    谷粒商城 一 1 环境搭建 安装 docker docker 安装 mysql docker 安装 redis 安装配置 git 准备工具 IDEA VsCode 从 gitee 初始化项目 2 创建微服务项目 1 创建项目 2 初始化数据
  • 大疆睿炽Tello EDU无人机python操控之三——使用easyGUI模拟操控界面控制Tello EDU

    使用easyGUI模拟操控界面控制Tello EDU 说到easyGUI这个模块 大家应该都不陌生了 模块名中有个 easy 是的 这代表它用起来很简单 这个模块就是一个能够轻易创建用户界面的工具 所以本篇文章我们将实现使用用户界面来对Te
  • Gateway、Nacos依赖启动问题解决

    今天是2022年开工的第一天 本是摸鱼带薪的一天 最终被一个bug所打扰 这怎么可以呢 新的一年第一个bug记录一下 祝大家 新年快乐 摸摸头 代码样例 报错如下 启动即报错 直接好家伙 下面是排查报错的步骤 相信英语跟我一样不好的同学 翻
  • 全排列算法的c++实现(非递归)

    本文算法出自 梦辽软件 只实现了文中所说的第五种算法 全排列 非递归求顺序 算法 1 建立位置数组 即对位置进行排列 排列成功后转换为元素的排列 2 按如下算法求全排列 设P是1 n 位置编号 的一个全排列 p p1 p2 pn p1 p2
  • Dynamics CRM IFD部署之后遇到的登录问题

    Dynamics CRM IFD部署之后遇到的登录问题 证书问题 共用证书 域控问题 跨域登录 登录后报404 证书问题 共用证书 因为公司只给了一个证书 且UAT环境和生产环境都进行了IFD部署 当在同一个浏览器同时登录UAT和生产环境就
  • COCO数据集annotation内容

    本文转载自 http blog csdn net qq 30401249 article details 72636414 找了很多coco数据集的资料 感觉里面的东西有些还是不清楚 顺便就转载下 instances train2014 j
  • 2020年度全球人工智能十大事件

    当前 新一代人工智能技术在全球蓬勃兴起 迅猛发展 与大数据 区块链 5G等新技术相互融合 相互因应 为经济社会发展尤其是数字经济发展注入新动能 正在深刻改变社会生产生活方式 与此同时 如何在新技术变革浪潮中始终立于主动 实现人工智能等前沿科
  • 机器学习基础篇-数据清洗

    Capture 1 在机器学习的工作流中 数据清洗环节尤为重要 接下来首先让我们看一下数据预处理的流程图 总的来说 主要包含下面三大块 收集数据 标注数据 提升数据质量 Capture 2 NO 1 Data Errors 所谓数据错误 就