数据预处理的几个方法:白化、去均值、归一化、PCA

article/2025/8/14 21:50:13

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

以上转载自:http://ufldl.stanford.edu/wiki/index.php/%E7%99%BD%E5%8C%96
假定数据表示成矩阵为X,其中我们假定X是[N*D]维矩阵(N是样本数据量,D为单张图片的数据向量长度)。
去均值,这是最常见的图片数据预处理,简单说来,它做的事情就是,对待训练的每一张图片的特征,都减去全部训练集图片的特征均值,这么做的直观意义就是,我们把输入数据各个维度的数据都中心化到0了。这么做的目的是减小计算量,把数据从原先的标准坐标系下的一个个向量组成的矩阵,变成以这些向量的均值为原点建立的坐标系,使用python的numpy工具包,这一步可以用X -= np.mean(X, axis = 0)轻松实现。
归一化,归一化的直观理解含义是,我们做一些工作去保证所有的维度上数据都在一个变化幅度上。通常我们有两种方法来实现归一化。一个是在数据都去均值之后,每个维度上的数据都除以这个维度上数据的标准差(X /= np.std(X, axis = 0))。 另外一种方式是我们除以数据绝对值最大值,以保证所有的数据归一化后都在-1到1之间。多说一句,其实在任何你觉得各维度幅度变化非常大的数据集上,你都 可以考虑归一化处理。不过对于图像而言,其实这一步反倒可做可不做,像素的值变化区间都在[0,255]之间,所以其实图像输入数据天生幅度就是一致的。

PCA和白化/whitening,这是另外一种形式的数据预处理。在经过去均值操作之后,我们可以计算数据的协方差矩阵,从而可以知道数据各个维度之间的相关性,简单示例代码如下:
假定输入数据矩阵X是[ND]维的
X -= np.mean(X, axis = 0) # 去均值
cov = np.dot(X.T, X) / X.shape[0] # 计算协方差
得到的结果矩阵中元素(i,j)表示原始数据中,第i维和第j维的相关性。有意思的是,其实协方差矩阵的对角线包含了每个维度的变化幅度。另外,我们都知道协方差矩阵是对称的,我们可以在其上做矩阵奇异值分解(SVD factorization):
U,S,V = np.linalg.svd(cov)
其中U为特征向量,我们如果相对原始数据(去均值之后)去做相关操作,只需要进行如下运算:
Xrot = np.dot(X, U)
这么理解一下可能更好,U是一组正交基向量。所以我们可以看做把原始数据X投射到这组维度保持不变的正交基底上,从而也就完成了对原始数据的去相关。如果去相关之后你再求一下Xrot的协方差矩阵,你会发现这时候的协方差矩阵是一个对角矩阵了。而numpy中的np.linalg.svd更好的一个特性是,它返回的U是对特征值排序过的,这也就意味着,我们可以用它进行降维操作。我们可以只取top的一些特征向量,然后做和原始数据做矩阵乘法,这个时候既降维减少了计算量,同时又保存下了绝大多数的原始数据信息,这就是所谓的主成分分析/PCA:
Xrot_reduced = np.dot(X, U[:,:100])
这个操作之后,我们把原始数据集矩阵从[N
D]降维到[N*100],保存了前100个能包含绝大多数数据信息的维度。实际应用中,你在PCA降维之后的数据集上,做各种机器学习的训练,在节省空间和时间的前提下,依旧能有很好的训练准确度。

最后再提一下whitening操作。所谓whitening,就是把各个特征轴上的数据除以对应特征值, 从而达到在每个特征轴上都归一化幅度的结果。whitening变换的几何意义和理解是,如果输入的数据是多变量高斯,那whitening之后的 数据是一个均值为0而不同方差的高斯矩阵。这一步简单代码实现如下:
白化数据
Xwhite = Xrot / np.sqrt(S + 1e-5)
提个醒:whitening操作会有严重化噪声的可能。注意到我们在上述代码中,分母的部分加入了一个很小的数1e-5,以防止出现除以0的情况。 但是数据中的噪声部分可能会因whitening操作而变大,因为whitening操作的本质是把输入的每个维度都拉到差不多的幅度,那么本不相关的有微弱幅度变化的 噪声维度,也被拉到了和其他维度同样的幅度。当然,我们适当提高分母中的安全因子(1e-5)可以在一定程度上缓解这个问题。
下面给出图示:
这里写图片描述

图像预处理之减去RGB均值

减去RGB均值(实例以DIV2K数据集为例)
在计算机视觉领域中,一定免不了的就是图像预处理中的 逐个样本减去mean值的过程,那么为什么一定要做这一步呢?

为什么每张图片都要减去数据集均值呢?

原因:为了进行数据特征标准化,即像机器学习中的特征预处理那样对输入特征向量各维去均值再除以标准差,但由于自然图像各点像素值的范围都在0-255之间,方差大致一样,只要做去均值(减去整个图像数据集的均值或各通道关于图像数据集的均值)处理即可。

主要原理:我们默认自然图像是一类平稳的数据分布(即数据每一维的统计都服从相同分布),此时,在每个样本上减去数据的统计平均值可以移除共同的部分,凸显个体差异。

其效果如下所示:
在这里插入图片描述
可以看到天空的纹理被移除了,凸显了汽车和高楼等主要特征。

最值得注意的一点是,在计算均值之前就要预先划分好训练集验证集和测试集,然后只针对训练集计算均值,否则就违背了深度学习的原则:模型训练过程仅能从训练模型中获取信息。得到训练集的均值后,对训练集验证集和测试集分别减去该均值。


http://chatgpt.dhexx.cn/article/VSTlQyf6.shtml

相关文章

关于文本数据预处理的一些方法

最近在进行一个关于深度学习的文本情感分类的项目,从数据获取到清洗,以及文本标注这些都在准备。文本预处理是NLP中十分关键的一个流程,正所谓数据是否优质决定着神经网络的训练效果,以及后续对神经网络的调参,本文分享…

R语言|数据预处理方法

数据预处理的主要内容包括 数据清洗 原始数据的质量直接影响了数据分析的质量,不符合要求的脏数据有: 无关数据。重复数据或者含有特殊符号的数据。缺失值。产生原因是有些数据无法获取,或者获取成本过高,或者获取数据时产生误…

数据预处理流程

数据预处理流程总结 下面分享一下自己通常会用到的一些数据预处理的方法和步骤,用Kaggle平台上的elo用户忠诚度预测的数据集作为应用案例。 import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] merch…

transforms数据预处理方法(一)

transforms数据预处理方法(一) 文章目录 transforms数据预处理方法(一)1.transforms——裁剪(1) transforms.CenterCrop(size)(2) transforms.RandomCrop (size, padding None , pad_if_needed False ,fill 0 , padding_mode cons…

大数据处理之道(预处理方法)

一:为什么要预处理数据? (1)现实世界的数据是肮脏的(不完整,含噪声,不一致) (2)没有高质量的数据,就没有高质量的挖掘结果(高质量的决…

过程数据_数据预处理的方法

首先,我们先来搞清楚,什么叫“过程数据”?以及什么叫“结果数据”? 简单来讲,“过程数据”指的是我们可以掌握的事务和行为“结果数据”就是我们不能完全掌控的。过程数据的英文翻译 基本释义 process data 参考释义过程数据的相关资料 临近单词 过半数 过 过期作废 过气 过谦…

类别型数据的预处理方法

在机器学习过程中,我们往往需要对数据进行预处理。根据数据的取值情况,我们可以把数据总体分为两大类:类别型数据和数值型数据。 对于数值性变量,通常不需要对其进行编码处理。而如何处理类别型数据是一个难题。处理的方法有很多种,各有优缺并且各有适用的范围。 本文在收…

大数据预处理方法,来看看你知道几个

大数据蕴含巨大价值,引起了社会各界的高度关注。大数据的来源多种多样,从现实世界中采集的数据大体上都是不完整、不一致的脏数据,无法直接进行数据挖掘和分析,或分析挖掘的结果差强人意。为了提高数据分析挖掘的质量,…

机器学习中数据预处理的几种方法

由于实际收集到的机器学习数据集不可避免的会存在数据缺、数据集不平衡和数据集中各类数据非同一量级等情况,对缺失数据进行补全和对异常数据进行清洗、均衡化处理防止类别不平衡和数据标准化处理对于机器学习模型至关重要。 1 数据补全方法 有效地恢复缺失的数据是…

常见近红外/红外光谱数据预处理方法及MATLAB实现

在近红外等光谱数据分析建模过程中,最关键的一步除了特征选择之外就是光谱数据预处理,预处理的原因是光谱数据除了纯光谱(pure spectra)之外还包含基线漂移、噪声等信号,与此同时存在着因样本大小以及环境等因素带来的…

数据预处理常用方法总结

目录 一、数据清理1 处理缺失值2 噪声数据 二、数据集成1 实体识别2 冗余和相关分析3 数值冲突的检测与处理 三、数据变换1 数据规范化2 数据离散化3 概念分层 数据预处理包括多种方法,诸如数据清理、数据集成、数据变换等。 一、数据清理 数据清理主要是处理缺失…

数据预处理的方法有哪些

数据处理的工作时间占整个数据分析项目的70%以上,因此,数据的质量直接决定了分析模型的准确性。那么,数据预处理的方法是什么呢?例如数据清理、数据集成、数据规范、数据转换等,其中最常用的是数据清理和数据集成&…

数据预处理(方法总结)

数据预处理(方法总结) 转自-https://www.cnblogs.com/sherial/archive/2018/03/07/8522405.html 一、概述 在工程实践中,我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。数据预处理没有标准的流程&…

机器学习算法笔记之6:数据预处理

一、概述 在工程实践中,我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。数据预处理没有标准的流程,通常针对不同的任务和数据集属性的不同而不同。数据预处理的常用流程为:去除唯一属性、处理缺失值、属…

Python的数据分析可视化十种技能总结

常见的可视化试图列举 可视化视图可以分成4大类:比较、联系、构成和分布。他们的特点如下: 1、比较:比较数据之间的各类别的关系,或者是他们随着时间的变化趋势,比如折线图;2、联系:查看两个或…

python 典型变量分析

典型相关分析 1.典型相关分析的基本思想是首先在每组变量中找出变量的线性组合,使其具有最大相关性,然后再在每组变量中找出第二对线性组合,使其分别与第一对线性组合不相关,而第二对本身具有最大的相关性,如此继续下…

脑影像分析|数据分析——单个变量或多个变量与y的皮尔逊相关,同时返回r与p值(python)

| 图源 皮尔逊相关是计算两个变量之间线性相关关系,或者两个向量共线程度的常用指标,应返回衡量相关程度的r值,和相关显著程度的p值。我们熟知的工具包,如pandas,numpy和scipy等,只能计算单个变量x与变量y之…

SPSS处理多自变量多因变量分析以及描述平均值,在不同情况

SPSS处理工具:SPSS25.0 准备好数据 1.分析多自变量对某一个因变量的显著性 在分析里找到,General linear model,然后选择Univariate, 分别把两个自变量TIssue and Speed 输入到Fixed Factor,然后设置Option里的描述,如果需要其他的设置可以…

R语言实现双变量分析教程

双变量分析表示分析两个变量。 双变量分析是为了分析两个变量之间的关系,与单变量、多变量分析对应。主要有三种方式进行双变量分析。 散点图相关系数简单线性回归 下面使用测试数据作为示例来演示三种方法,供包括两个变量,HourStudied表示…

spss实战案例----分析多个变量与因变量之间是否存在关系,方差分析

本案例是IBM SPSS数据分析与挖掘实战案例精粹----第七章的学习记录 案例背景或目标:激素水平是否在对照组和实验组之间存在差异 分析方法:Bootstrap抽样,秩和检验,秩变换方法,cox回归 字段包括:性别&…