第一章(续篇):数据的预处理

数据分析(二)数据预处理 数据分析(二)数据预处理缺失值处理删除法填补法异常值检测错误发现与修复变量离散化变量标准化实体识别数据抽样和过滤欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的... 阅读详情

前言

数据的预处理在人工智能和数据挖掘领域都是恒久的经典话题。现实中,我们所拿到的数据可能有残缺项,可能有离常值等各种问题。类比人类的学习过程,这就像你在挑选习题集的时候,总要买质量好的练习题才能学到真东西,也能更准确地反映自己的学习状态。一个高质量的数据集,能够帮助我们的学习模型更快的了解数据本身的特征。在深度学习和机器学习中,好的预处理有利于稳定初始训练状态,减少触发梯度计算中潜在的爆炸,消失等问题的几率,同时能够方便模型进行寻优。

既然预处理如此重要,那么在机器学习和深度学习的数据预处理中,我们怎样对数据进行预处理呢?又通常需要从哪几个方面出发,做哪些处理工作呢?在这一续章中,我们对机器学习中数据预处理的几个基本问题进行讨论,并对常见的数据预处理方式进行解释说明。这里因为笔者的研究方向主要是计算机视觉,因此对于文本样本数据集的预处理暂不做讨论。我对这方面的了解不多,如果以后有机会学习到了,再和大家一起分享。

数据处理工具

好的处理工具,能够最大限度帮助我们尽快完成数据的处理。那么通常在数据预处理阶段,我们会使用哪些框架或者工具来实现我们的目标呢?我理解的答案是:数据预处理方式往往和你使用的学习框架是相关的,这也能够最大化方便你减少代码的依赖。比如在机器学习领域中,我们通常使用的框架是sklearn,而sklearn中有对应的data preprocessing,能够帮助你批量处理组织好的数据。或者在数据科学专业中,我们通常会使用Pandas这个库对数据进行预处理。

同样,在深度学习领域,不同的框架也有不同的预处理方式,如keras的Preprocessing,pytorch的Transformer等,通过一些参数的设定,能够帮助我们在最短的时间内完成基本的数据预处理工作,而不必手动对其进行操作。除了传统的预处理,我们在这里要解释一个点:在实现迁移学习的过程中,我们对数据进行的预处理,最好要和pretrained model在训练时的预处理保持一致。这样在使用pretrained model进行特征提取的时候,才不会因为数据的预处理不一致,导致预训练模型输出的特征不具备“正确性”,从而后续finetuning的层没有“正确的”features进行学习。那么为了和预训练模型保持一致,许多preprocessing也被集成到finetuning对应的module中,方便大家import。这个在不同框架对应的Documents中都有解释,在学习使用finetuning技巧的时候,一定要采用正确的预处理方式,这意味着你的预处理要和你的预训练模型是对应的,这样你的finetuning结果才可靠。

常见预处理方式

那么常见的数据预处理方式有哪些呢?事实上,数据预处理的主要步骤分为:数据清理、数据集成、数据规约和数据变换。

图1 数据预处理基本环节

但是实际上我们在进行研究的过程中,笔者个人感觉数据集成这个内容出现的需求并不常见,因此这个方面我们不做过多的讨论。上面的四个专有名词写的有些抽象,我们转换成常听到的词汇:

1)数据清理:离常值,缺失值,噪声数据等的处理。这部分内容在文档 [1]中讲解的十分清楚了,由于内容比较简单且解释类似操作的博文也比较全面了,因此这里不多赘述。

2)数据规约:其实就是数据降维。通常我们分析的数据包括了很多维度的信息,其中部分信息是与挖掘任务不相关的,同时也和其他的特征属性有着密切的关系。因此,我们在分析数据的时候可以将这部分不相关的数据进行删除,在保证有用信息量不减少的情况下,尽可能减少数据分析量,降低由于数据造成的波动和干扰。同时也能够节约模型参数,达到高效分析的目的。

常见的数据规约过程包括:相关系数和卡方检验(变量相关性);回归系数(重要性排序);特征稀疏化Lasso等,这个是从变量的相关性和重要程度进行的分析。同样的,我们也可以将传统的降维算法引入进来进行分析,如常见的PCA,FA,SVD,聚类等。通过这一类方法,我们仍然可以在保证最大信息量的前提下进行数据的降维。

3)数据变换:这个换成熟悉的内容就是常见的规范化处理。如:Z-score标准化,最大最小规范[0, 1],或者常用在生成式对抗网络中的 [-1, 1] 规范化。同时,对于数据量级变化较大的,我们通常采用的对数化也是十分常见的操作。这里提到的规范化,不仅仅限于计算机视觉中,同时也包括数据科学领域的一些预处理。规范化处理在深度学习和机器学习中也是必不可缺的一个环节,具体那哪种表现较好,需要实际的测试才能够有一个准确的判断。但是我们讲,一般情况下,归一化是一种首选的经验操作,也是普遍能够使模型work的预处理方法。

数据变换的另一类是指数据的离散化处理。这一内容在 [1] 的6.3.5节离散化中有十分详细的分析,通常由等频,等宽,聚类等进行离散处理。这里我们不多赘述,具体的例子和代码要认真参考sklearn的官方Document。作者在这里为大家整理了一些非常有用的在线学习资料,也是我个人在学习过程中看到的。[2, 3, 4, 5] 基本上涵盖了所有相关数据预处理和分析的内容,都是我自己读过觉得质量非常高的参考文献。感兴趣的读者可以在这几个链接的基础上进行继续学习。

数据预处理的好处

为什么说在机器学习中,数据预处理是必不可缺的一个重要环节呢?我们在这里引用吴恩达老师的一张经典的幻灯片来解释这一现象。如果将数据的某些维度投影到一个平面,我们可以看到,左边未进行规范化的数据他们的梯度分布不均匀。如果我们菜用随机初始化网络参数,那么这个随机的起始点对于优化的过程影响是很大的。图2中左边的蓝色优化路径是剧烈波动的,同时也是在反复震荡中走向最优点。那么如果对数据进行规范化(预处理的一种),那么情况则大不相同。从图2右边的可以看出,随机的初始点对于优化过程的影响不是很明显同时所有的梯度都是均匀分布的,这意味着在同样学习率的情况下,不会产生巨大的波动导致训练过程缓慢且模型难以收敛。然而相比图2 左边,我们可能需要在学习的过程中动态设置学习率,才能够保证最后的优化结果是最优解。

图2 数据规范化的对比

结束语

到此,我们对数据的预处理进行了简单的讨论,同时对于预处理中基本的一些问题进行了比较通俗的解释和分析。之所以博客的开篇重点花了两篇博文,对数据及其预处理进行阐述,就是为了强调在深度学习和机器学习中:对于数据的分析和探讨是任何一个高质量项目开始的必要过程。我们只有了解我们要处理的东西是什么,才能把这个东西做好做完整。就像做一道菜,你要明白你的原料是什么,你要怎么挑菜(筛选特征数据),处理你的食材(预处理)才能做出最美味的菜。至于炒菜的过程(训练模型)和调味烧制(调参训练),也是需要认真学习的。不然光有好的原材料,也没法做出一道美味的菜。希望这篇博文能帮助大家建立数据预处理的一些意识!如果有任何问题请在博文下方留言。谢谢!

Reference

[1] https://scikit-learn.org/stable/modules/preprocessing.html

[2] https://www.jiqizhixin.com/articles/2019-02-21-15

[3] https://www.ibm.com/developerworks/cn/analytics/library/data-preprocessing-in-detail/index.html

[4] https://cloud.google.com/solutions/machine-learning/data-preprocessing-for-ml-with-tf-transform-pt1?hl=zh-cn

[5] https://zhuanlan.zhihu.com/p/34594982

 

 

 

大数据预处理技术:第一章:数据预处理总述 用于帮助从原有庞大数据集中获得一个精简的数据集合,并使这一精简数据集保持原有数据集的完整性,这样在精简数据集上进行数据挖掘显然效率更高,并且挖掘出来的结果与使用原有数据集所获得结果是基本相同。在现实场景中,数据集是很庞大的,数据是海量的,在整个数据集上进行复杂的数据分析和挖掘需要花费很长的时间。在数据库中是指在不同地方存储和使用的同一数据应当是等价的,表示数据有相等的值和相同的含义。数据的时效性很大程度上制约着决策的客观效果。由于重复录入,并发处理等不规范的操作,导致产生不完整,不准确的,无效的数据。 阅读详情

相关推荐

【数据预处理】Python数据预处理常见操作

  文章总结了拿到原始数据后,做数据预处理的常见操作。后续会根据总结不断更新。 目录一、数据查看二、数据转换三、数据清洗1.异常值2.重复值3.缺失值四、数据获取五、数据合并1.join,基于index连接DataFrame的列2.merge,基于column连接,类似SQL的join3.concat,合并相同的Excel或给DataFrame添加行或列时使用六、其他操作1.数据分组聚合2.列表生...

WANG_hl的博客 4855

Pandas第三次作业20200907

练习1 • 读取北向.csv 指定第一列为行索引 • 查看数据的基本信息 有无缺失值 对其缺失值进行处理 • 删除缺失值所在行 • 查看数据的基本信息 查看数据是否清洗完毕 • index列没啥用 将index列删除 • 观察数据是否有重复行 • 将重复行进行删除 • 将行索引 进行升序 • 将处理好的数据 保存至 北向(副).csv #!/user/bin/env python #-*-coding: utf-8-*- #@Time : 2020/9/719:53 #@Author

Narutolxy的博客 1879

脑电:数据预处理

任务态数据二次滤波和二次分段(都会改变原来一次分段基线校正后的均值),所以都需要进行二次的基线校正。先进行二次滤波,在进行二次分段(因为滤波后还需要基线校正,直接在二次分段时校正即可)二次滤波:预处理时的频段和分析时频段不一样时二次分段:分析的ERPs的分段变成[-0.2, 1]静息态的数据的上述步骤基本一样,只有分段时没有marker标记,所以分段按照代码的方式进行分段。

nisidjndn的博客 2175

学习笔记(25):第一章:深度学习基础-数据预处理

本章介绍深度学习整体结构和数据预处理知识

weixin_45414304的博客 205

数据采集与预处理01: 项目1 数据采集与预处理准备

数据采集:足够的数据量是企业大数据战略建设的基础,因此数据采集成为大数据分析的前站。数据采集是大数据价值挖掘中重要的一环,其后的分析挖掘都建立在数据采集的基础上。大数据技术的意义确实不在于掌握规模庞大的数据信息,而在于对这些数据进行智能处理,从而分析和挖掘出有价值的信息,但前提是拥有大量的数据。数据采集过程中涉及3个过程:数据的抽取Extract,数据的清洗转换Transform和数据的加载Load。英文缩写为ETL。数据采集的来源:管理信息系统、Web信息系统、物理信息系统、科学实验系统。

深竹清风的博客 3110

数据挖掘:数据预处理相关概念

数据挖掘:数据预处理相关概念 一、什么是数据预处理? 一般我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。它是一系列对数据操作的统称。 数据预处理没有标准的流程,通常针对不同的任务和数据集属性的不同而不同。数据预处理的常用流程为: 数据清洗:可以用来清楚数据中的噪声,纠正不一致。 数据集成:将数据由多个数据源合并成一个一致的数据存储,如数据仓库。 数据归约:可以通过如聚集...

AvenueCyy的博客 6967

数据预处理及预处理方法(附思维导图)

数据预处理简单来说就是在进行数据探索数据处理之前对数据进行一系列处理,将数据中的脏数据去除,之后进行数据分析的时候保证结果的准确性。数据预处理主要分为三个部分:数据清洗、数据集成、数据归约。

qq_57629191的博客 7876

数据的预处理

数据预处理一、数据可能存在问题二、数据预处理步骤1、数据预处理1.1 缺失值处理1.2 离群点检测1.3 重复数据处理2、数据转换2.1 将分类变量转换为数值2.2 处理数据不均衡问题2.3 数据的归一化、标准化 一、数据可能存在问题 在实际业务处理中,数据通常是脏数据。所谓的脏,指数据可能存在以下几种问题(主要问题): 数据缺失 数据噪声 (Noisy)是数据值不合常理的情况。如 Salary = “-100” 数据不一致 (Inconsistent)是数据前后存在矛盾的情况。如 Age =

阿斯达克 3039

数据分析师必备——数据预处理思维导图(数据探索)

前言:作为一名数据分析师。首先,我们拿到数据时,脑海中要有一个数据处理框架,或者说是数据处理模板。当我们在脑中深刻记住接下来的数据处理模板,并细化了解每个模块,一个模块一个模块的去攻克它。这样,会使得我们学习数据分析更得心应手。但注意的是,就好像英语作文模板一样,套用时不能太死。数据分析也一样,还是根据我们现实需求,进行数据分析。数据预处理的背景:平时当我们拿到数据时,数据很难达到自己预想的模样,...

libinhai110的博客 7062

数据预处理概述及归一化

数据预处理的主要作用是为将未经处理的原始数据转换为在数量、结构和格式方面完全适合于对应的数据挖掘任务的干净数据,数据预处理是一种已被证明上述问题的有效方法。数据预处理主要包括数据清理、数据集成、数据变换、数据归约4种基本过程。图形显示有助于可视化地审视数据,利于识别噪声和离群点,对数据预处理是相当有用的。标准化是一种特征缩放技术,它通过对数据进行变换,使得数据满足均值为0、标准差为1的正态分布。标准化通常涉及从每个数据点中减去平均值,然后除以标准差,从而将数据调整到均值为0、方差为1的范围内。

2401_83507670的博客 2272

深入解析数据预处理技术

数据清洗是数据预处理的重要环节,可以帮助提高数据质量,减少错误和噪声的影响,使数据更适合后续分析和应用。数据清洗的对象是数据,目的是发现并纠正数据文件中可识别的错误,包括检查数据一致性,处理无效值和缺失值等。理解数据:在选择数据预处理方法之前,首先要深入理解数据的特点、分布和含义。这包括了解数据的类型(数值型、类别型、文本型等)、数据的缺失情况、数据的分布和偏度等。只有对数据有深入的理解,才能选择合适的预处理方法。选择合适的缺失值处理方法:根据缺失值的类型和缺失值的比例选择合适的缺失值处理方法。

whm0802_的博客 1953

数据预处理

介绍了数据预处理的基本概念,缺失值,异常值,重复值的处理方法,以及数据转换的方法,数据预处理常用的一些类库

JasonH2021的博客 1万+

从MC到DC:三维重建算法的核心原理与实战对比

本文深入对比了三维重建领域两大经典算法Marching Cubes(MC)与Dual Contouring(DC)的核心原理与实战表现。MC算法原理直观、实现简单,但存在特征丢失和二义性问题;DC算法通过求解二次误差函数(QEF)和利用法向量信息,能更好地保留模型的尖锐特征,但计算更复杂。文章结合医学影像处理实例,为开发者根据速度、精度和特征保真度需求选择合适算法提供了清晰指南。

weixin_29251131的博客 1033

数据预处理 —— AI算法初识

AI算法对数据进行预处理的原因主要基于以下几个核心要点:1. **数据清洗**:- 数据通常包含缺失值、异常值或错误记录,这些都会干扰模型训练和预测准确性。通过预处理可以识别并填充/删除这些不完整或有问题的数据。2. **数据一致性**:- 不同来源或格式的数据可能存在差异,例如日期格式不统一、数值精度问题等。预处理有助于将数据转换为一致的格式,便于后续分析和建模。3. **特征缩放与标准化**:- 许多机器学习算法(如距离度量相关的K近邻、支持向量机等)在处理不同尺度的特征时表现不佳。

初心不忘产学研的博客 3182

CS5523实战:如何用国产芯片完美替代LT8911设计MIPI转eDP电路(附原理图)

本文详细介绍了使用国产芯片CS5523完美替代LT8911进行MIPI转eDP电路设计的实战经验。文章从芯片选型、核心特性对比入手,深入剖析了电源时钟设计、MIPI/eDP接口的PCB布局与信号完整性要点,并提供了完整的原理图参考和调试排错指南,为硬件工程师实现国产化替代提供了清晰可行的方案。

yhn4567890的博客 1140

【硬件】通俗易懂的讲解晶体管(三极管和MOS管)的工作原理

晶体管是一个简单的元器件,可用于构建许多有趣的项目。在本文中,我将用通俗易懂的语言给您讲解晶体管的工作原理,以便您可以在电路设计中更好的使用静态管。一旦你学习这些基础知识,对以后的设计和使用来说,将会变得非常容易。我们将重点介绍两种最常见的晶体管:双极型晶体管(三极管)和MOSFET。晶体管的工作原理其实是类似于电子开关。它可以打开和关闭电路。一个简单的思考方法是将晶体管视为无源的继电器。晶体管类似于继电器,从某种意义上说,您可以使用它来打开和关闭某些东西。但晶体管也可以部分导通,一般在放大电路中使用,这部

1万+

《Python数据预处理》第一章

本章主要围绕“为什么需要数据预处理”展开。缺失错误重复冲突噪声等问题。因此,在进行数据分析、机器学习、人工智能建模之前,需要通过数据预处理提高数据质量。数据预处理概述;常见数据问题;数据质量评价;数据预处理流程;Python数据分析开发环境;Jupyter Notebook使用;NumPy、SciPy、Pandas工具介绍。1.1 数据预处理概述1.2 常见的数据问题1.3 数据预处理流程1.4 开发环境设置1.5 Jupyter的使用。

jerrykorea的博客 206

图像调整亮度饱和度 c语言,【C#/WPF】调节图像的HSL(色相、饱和度、明亮度)...

先说概念:HSL是一种描述颜色的方式(其他颜色描述方式还有大家熟悉的RGB值)。HSL三个字母分别表示图像的Hue色相、Saturation饱和度、Lightness明亮度。需求:制作一个面板,包含三个滑动条,拖动滑动条可以修改目标图片的HSL值。即模仿PS中类似的功能,如下图:方案一:遍历所有像素点,修改每个点的HSL值。前台界面:一个Image控件显示目标图片,一个Button按钮点击一下降低...

weixin_39935777的博客 1155

R语言进行数据预处理

在做机器学习之前需要对数据进行数据预处理,下面介绍几种数据预处理的方法,配合着前面讲到的数据结构看会比较好。数据预处理有四个任务:数据清洗、数据集成、数据变换、数据规约。 ...

daydayup8888的博客 4806

哨兵2植被参数反演避坑指南:SNAP中10m/20m分辨率选择与缺失波段处理

本文深入解析了使用SNAP软件进行哨兵2号植被参数反演时的关键操作与决策。核心在于理解SNAP生物物理处理器NNET10m与NNET20m的架构差异,根据是否需要反演冠层叶绿素含量(Cab)等参数,明智选择10米或20米分辨率工作流。文章详细指导了大气校正、波段重采样及处理L2A数据中B01波段“缺失”等常见问题的解决方案,为生态监测与精准农业应用提供清晰的避坑指南和完整实战流程。

wdx01234567的博客 262

E4A蓝牙APP开发实战:从零到一构建简易物联网控制终端

本文详细介绍了使用E4A(易安卓)开发蓝牙APP的实战教程,从零开始构建简易物联网控制终端。通过E4A的中文编程环境和内置蓝牙组件,开发者可以快速实现智能家居控制、创客项目遥控等功能。文章涵盖硬件准备、开发环境搭建、核心代码解析及典型应用场景,特别适合零Java基础的电子爱好者入门蓝牙APP开发。

weixin_42715608的博客 475

《Python数据预处理》总结

《Python数据预处理》书中各章知识点 第一章 数据预处理概述 大数据项目开发流程:

qq_53217531的博客 1898

基于YOLOv8的城市违建识别系统:从数据集构建到UI界面实现

YOLOv8是Ultralytics公司于2023年推出的最新一代YOLO(You Only Look Once)系列目标检测算法。更高效的骨干网络设计改进的锚框机制更精确的损失函数支持分类、检测、分割等多任务YOLOv8特别适合像违建识别这样的实时检测任务,能够在保持高精度的同时实现快速推理。

YOLO 675
上一篇: 第一章:喂什么数据给我的模型吃?
下一篇: 论文笔记与解读《DRAW: A Recurrent Neural Network for Image Generation》
Yzy_Carlisle
博客等级 码龄10年 38粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值