ML 系列:机器学习和深度学习的深层次总结(06)— 提升数据质量

news/2024/9/28 21:37:53 标签: 机器学习, 深度学习, 人工智能

一、说明

在AI数据挖掘中,对原始数据的预处理是必须的技术手段,本篇将对数据预处理的一系列注意事项进行展示。

二、关于数据预处理

注意: 在本章中,讨论的技术和方法基于 Roy Jafari 的《Hands-On Data Preprocessing in Python》一书,该书为理解和实施有效的数据预处理工作流提供了有价值的参考。

数据预处理是指在应用机器学习算法之前准备数据以进行分析的技术和过程。这些步骤包括数据清理、数据规范化、数据缩减、将原始数据转换和组织成算法可以轻松使用的格式。数据预处理的目的是提高数据质量、减少噪声并消除任何不一致或可能的错误。

数据清理涉及删除或更正数据中的任何错误、不一致或缺失值。数据转换涉及将数据转换为更适合分析的格式,例如将分类数据转换为数值数据或降低数据的维度。数据规范化涉及缩放数据以确保其位于特定范围内,这对于某些机器学习算法可能很重要。数据集成涉及将来自多个来源的数据合并到单个数据集中。数据缩减涉及通过仅选择最相关的特征或样本来减小数据集的大小。

数据清理的过程可能因项目而异,并且无法提供有关如何执行数据清理的清晰分步说明,但是,我们可以将数据清理过程分为三个级别,如下所示:

三、清理一级

此级别是指数据的明显清理,大多数可用数据不需要此阶段的清理。如果数据集具有以下特征,则我们认为该数据集位于第一级:

  • 数据应具有标准结构。

  • 列的标题应清晰且可编码。

  • 每行数据都有一个唯一的标识符。

这种清理的一个例子可以认为我们有几个文本文件,如下图所示,如图 2 所示,这些数据没有适当的结构,应该以标准格式合并,以便对其进行分析。

在这里插入图片描述
在图 3 中,我们将文本数据以集成的方式转换为以下形式。
在这里插入图片描述
图 3.集成数据以达到数据清理的一级
在图 3 中,每一行都分配给一个文本文件,现在可以说这些数据处于数据清理的第一级。

四、清理二级

此级别是指 解包、重组和重新构建表。与一级数据清理不同,在一级数据清理中,样品不需要特殊分析,而在此级别的清理中,通常需要进行分析。如前所述,图 3 中的数据处于第一级清洗,如果我们注意每一行的名称,我们可以提取城市、月份和日期的名称,现在如果我们想要第二级清洗数据,具体打开数据的名称, 得到图 4。
在这里插入图片描述
图 4. 解压缩数据名称并向数据添加不同的列
在第二级数据清理中,可以进行更多的分析,例如以这样一种方式解包数据内容,即四个词的重复次数 [‘vote’, ‘tax’, ‘campaign’, ‘economy’] 并根据如图 5 所示向数据添加列,作为此分析的结果。
在这里插入图片描述
图 5. 解压缩数据内容并向数据添加不同的列
为了进一步分析,可以可视化添加的四列的不同值,如图 6 所示。
在这里插入图片描述
在这里插入图片描述
图 6. 可视化不同月份四个单词的重复次数

五、结论

在第 1 级中,我们清理了表格,但没有注意数据结构或记录的值。在第 2 级中,我们关注的是拥有一个能够支持我们分析目标的数据结构,但我们仍然没有太多关注记录值的正确性或适当性。这就是数据清理级别 3 的目标。在数据清理级别 III 中,我们将重点关注记录值,并采取措施确保解决与数据中记录的值相关的三个问题。首先,我们将确保检测到数据中的缺失值,我们知道发生这种情况的原因,并已采取适当的措施来解决这些问题。其次,我们将确保我们采取了适当的措施,以确保记录的值是正确的。第三,我们将确定已检测到数据中的极值点,并已采取适当措施解决它们。


http://www.niftyadmin.cn/n/5681890.html

相关文章

C#:动态为Object对象添加新属性的方法

在C#中,object 类型本身是一个基础类型,它不支持直接添加属性,因为 object 并不具备定义属性的能力(它不支持任何接口或基类中的属性,除非通过类型转换)。然而,有几种方法可以在运行时模拟给对象…

Linux学习之路 -- 线程 -- 条件变量与生产消费模型

前面我们已经提过线程互斥的相关概念&#xff0c;但是我们在前文的抢票逻辑中&#xff0c;我们其实很容易发现一个问题。那就是票可能被一直被一个人抢&#xff0c;这里我们就需要引入条件变量的概念。 目录 1、条件变量 <1>线程同步 <2>相关概念 <3>相…

解决Android中使用jdk 9以上中的某个类(AbstractProcessor)但是无法导入的问题

前景提要 今天在使用jdk中的AbstractProcessor类的时候&#xff0c;怎么都找不到&#xff0c;网上各种搜索&#xff0c;加什么依赖都没用&#xff0c;看了下依赖确实有这个类但是就是无法正常导入 然后翻了下android.jar&#xff0c;发现没有这个类 疑问 但是你尝试一下发…

滚珠丝杆如何安装滚珠?

滚珠丝杆安装滚珠是一门非常专业的知识&#xff0c;其安装过程需要细致且精确&#xff0c;这样才能确保其后续运行的顺畅与稳定。以下是安装滚珠的详细步骤&#xff1a; 一、准备工作 确保工作区域清洁无尘&#xff0c;准备合适的螺丝刀、扳手等工具&#xff0c;以及适量的润滑…

gcc选项-fno-access-control 使用

背景&#xff1a; 在进行eigen库进行移植时&#xff0c;总是报编译错误&#xff1a; error: struct std::basic_stringbuf<_CharT, _Traits, _Alloc>::__xfer_bufptrs redeclared with different access struct __xfer_bufptrs &#xff0c;单独写一个测试程序使用eig…

物理学基础精解【30】

这里写目录标题 微分导数一、导数的定义二、导数的几何意义三、导数的计算四、导数的应用 微分的定义一、基本概念二、数学定义三、具体形式四、几何意义五、与导数的关系 可微性与连续性一、连续性的定义二、可微性的定义三、可微性与连续性的关系四、结论 反函数的导数和隐函…

基于yolov8的海上红外目标系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的海上红外目标系统是一项集成了前沿技术的创新解决方案&#xff0c;专为复杂海洋环境下的目标检测而设计。该系统利用YOLOv8深度学习模型的强大目标检测能力&#xff0c;结合红外成像技术&#xff0c;实现了对海上小型船只、浮标、甚至水下潜器等目标…

Qt 每日面试题 -5

41、单继承和多继承 单继承&#xff08;派生类只从一个直接基类继承)时派生类的定义∶ class 派生类名:继承方式 基类名 { 成员声明; } 多继承 时派生类的定义∶ class 派生类名:继承方式1 基类名1&#xff0c;继承方式2 基类名2&#xff0c;… { 成员声明; } 注意:每一个“继…