深度学习中的数据预处理操作

常用预处理方法
1、零均值
零均值是数据预处理最为常用的方法。即将每一维原始数据减去这一维数据的均值,将结果替代原始的数据。预处理的结果是每一维数据的均值是0。

X -= np.mean(X,axis = 0)

2、归一化(normalization)
归一化就是将原始数据归一到相同的尺度,有两种归一化的方法:
1)先对每一维数据进行零均值,然后除以每一维数据的标准差。

X -= np.mean(X,axis = 0)
X /= np.std(X,axis = 0)

2)将不同维度的数据归一到相同的数值区间,如(-1, 1),(0, 255)。这种归一化仅仅当不同维的数据特征具有相同的重要性时采用,对于图片不需要采用这种归一化,因为图片像素的范围已经是归一化的了(0~255之间)。

在这里插入图片描述

3、PCA和白化
PCA作用:数据降维,加速机器学习进程。
步骤:
1)将数据进行零均值化。
2)计算数据的协方差矩阵得到数据不同维度之间的相关性。

X -= np.mean(X, axis = 0) # zero-center the data (important)
cov = np.dot(X.T, X) / X.shape[0] # get the data covariance matrix

注:实际上上面两步就是计算协方差的过程,即下式的代码实现:
Cov(Xi, Xj) = E{[Xi - E(Xi)][Xj - E(Xj)]}
得到的协方差矩阵如下图所示,其中对角线上的元素和等于那个向量自身的在这里插入图片描述
方差。如果协方差(元素)为正值,表明这两个特征之间的关系为正相关,如果为负值则为负相关,如果为0,则为不相关。协方差是对称并且半正定的。协方差矩阵经过变换可以得到一个完全不相关的矩阵,即主成分分析。
半正定矩阵定义:设A是n阶方阵,如果对任何非零向量X,都有X’AX≥0,其中X‘'表示X的转置,就称A为半正定矩阵。
正定矩阵:半正定矩阵中的X’AX≥0改为X’AX>0,即为正定矩阵。

3)对协方差矩阵进行奇异值分解(SVD分解),得到,U,Σ,V矩阵。

U,Σ,V = np.linalg.svd(cov)

注:其中,U和V均为单位正交阵,U为左奇异矩阵,,V成为右奇异矩阵,Σ仅在主对角线上有值,成为奇异值。奇异值分解主要用于数据压缩。
奇异值可以看做一个矩阵的代表值,或者说奇异值能够代表这个矩阵的信息,调用库函数进行奇异值分解得到的奇异值是按照从大到小排列的,奇异值越大时,它代表的信息越多,因此当我们取若干个最大的奇异值时,就可以基本还原出数据本身。
在这里插入图片描述

4)数据去相关。将零均值后的数据投影到特征向量上,选取前面几个特征向量来减少数据维度,这就是PCA降维。

Xrot = np.dot(X, U) # decorrelate the data,直接去相关性,或者进行下面的数据降维。
Xrot_reduced = np.dot(X, U[:,:100]) # Xrot_reduced becomes [N x 100] ,PCA降维

注:U矩阵的列为特征向量,这些列都是相互正交的,故可看为基向量。这种投影相当于将数据X翻转、投影到新的基向量轴上。此时我们再计算Xrot的协方差矩阵时,会发现它是一个对角阵,说明不同维度之间不在相关。调用库函数计算的U的各列是跟Σ的奇异值(由大到小排列)一一对应的,故U中前面的列就是主方向,可以提取前面的列减少数据的维度。

白化
上述过程为PCA降维过程。所谓白化,只是比PCA更为高级的一个算法。白化分为PCA白化和ZCA白化。
白化作用:降低输入数据的冗余性,具体来说白化的目的:使得 1)特征之间具有弱相关性。2)所有特征具有相同的方差。
PCA白化步骤:
1)PCA处理求出特征向量,不降维。
2)把数据X映射到新的特征空间,实现去相关性。
3)对去相关的数据进行方差归一化(即除以方差)。
ZCA白化:在PCA白化的结果再变回原来的坐标系下的坐标。

注:PCA和白化在CNN中基本不会用到。

数据预处理参考链接:https://blog.csdn.net/coder_gray/article/details/79677921
协方差矩阵参考链接:http://www.coozhi.com/muyingjiaoyu/xuexijiaoliu/22246.html
奇异值分解参考链接:https://www.cnblogs.com/endlesscoding/p/10033527.html
白化参考链接:https://blog.csdn.net/liuweiyuxiang/article/details/88133096

### 深度学习中的数据预处理 #### 数据预处理的重要性 在深度学习领域,数据预处理是一项关键技术,能够帮助将原始数据转化为有效的特征表示形式,从而提升模型训练效果和推理能力[^1]。 #### 中文NLP任务的数据预处理流程 对于自然语言处理(NLP),特别是针对中文的任务而言,其典型的数据预处理过程涵盖了多个方面: - **数据清洗**:去除无关字符或格式错误的内容; - **分词**:按照语义单位切分句子成词语序列; - **停用词过滤**:移除那些频繁出现但对理解文本意义贡献较小的词汇; - **词性标注**:给每个单词标记上对应的语法角色标签; - **实体识别**:定位并分类特定类型的命名实体(如人名、地点等); - **词向量化**:把文字信息映射到数值空间内便于计算的形式; 这些环节共同作用以优化输入至神经网络结构前后的文本质量[^2]。 #### 图像预处理及其白化技术的应用 当涉及到计算机视觉应用时,则需特别关注图像本身的特性调整工作。其中一项广泛应用的技术叫做“图像白化”,即通过执行某种线性的转换操作使得不同通道间像素值分布趋于独立同分布状态,进而减少不必要的关联噪声干扰项影响最终预测准确性[^3]。 ```python import numpy as np from sklearn.preprocessing import StandardScaler def apply_whitening(image_data): scaler = StandardScaler().fit(image_data.reshape(-1, image_data.shape[-1])) whitened_images = scaler.transform(image_data.reshape(-1, image_data.shape[-1])).reshape(image_data.shape) return whitened_images ``` 上述代码展示了如何利用`sklearn`库实现简单的图像标准化/白化功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值