特征脸(Eigenface)理论基础-PCA(主成分分析法)

本文主要补充介绍了特征脸方法(Eigenface)的理论基础——PCA(主成分分析)。通过一个机动车属性的数据集例子,解释了PCA如何降低数据冗余性和进行数据降维。PCA的关键在于寻找数据在单位向量上的投影以最大化方差,这些单位向量即为主成分。特征脸方法在人脸识别中利用PCA实现高维图像数据的降维表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在之前的博客  人脸识别经典算法一:特征脸方法(Eigenface)  里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在做补充。请将这两篇博文结合起来阅读。以下内容大部分参考自斯坦福机器学习课程:http://cs229.stanford.edu/materials.html

假设我们有一个关于机动车属性的数据集{x(i);i=1,...,m}(m代表机动车的属性个数),例如最大速度,最大转弯半径等。假设x(i)本质上是n维的空间的一个元素,其中n<<m,但是n对我们来说是未知的。假设xixj分别代表车以英里和公里为单位的最大速度。显然这两个属性是冗余的,因为它们两个是有线性关系而且可以相互转化的。因此如果仅以xixj来考虑的话,这个数据集是属于m-1维而不是m维空间的,所以n=m-1。推广之,我们该用什么方法降低数据冗余性呢?

首先考虑一个例子,假设有一份对遥控直升机操作员的调查,用x(i)1(1是下标,原谅我这操蛋的排版吧)表示飞行员i的飞行技能,x(i)

### 使用PCA压缩MNIST数据集 主成分分析(PCA)是一种用于降维的技术,可以减少特征数量的同时保留尽可能多的信息。对于像MNIST这样的手写数字图像数据集,应用PCA可以帮助降低维度并加速后续处理过程。 下面是一个完整的Python代码示例来展示如何利用`scikit-learn`库中的PCA功能对MNIST数据集执行降维操作[^1]: ```python from sklearn.decomposition import PCA from keras.datasets import mnist import matplotlib.pyplot as plt import numpy as np # 加载 MNIST 数据集 (X_train, y_train), (X_test, y_test) = mnist.load_data() # 将图片转换成一维向量形式 n_samples, h, w = X_train.shape X_train = X_train.reshape((n_samples, h * w)) n_samples_test, _, _ = X_test.shape X_test = X_test.reshape((n_samples_test, h * w)) # 归一化像素值到0-1之间 X_train = X_train / 255. X_test = X_test / 255. # 创建PCA模型实例,并指定要保留的主要成分数目 pca = PCA(n_components=784) # 对训练集进行拟合变换 X_train_pca = pca.fit_transform(X_train) # 应用相同的变换于测试集上 X_test_pca = pca.transform(X_test) # 可视化前几个主要成分的效果 def plot_gallery(images, titles, n_row=3, n_col=4): """Helper function to plot a gallery of portraits""" plt.figure(figsize=(1.8 * n_col, 2.4 * n_row)) plt.subplots_adjust(bottom=0, left=.01, right=.99, top=.90, hspace=.35) for i in range(min(len(titles), n_row * n_col)): plt.subplot(n_row, n_col, i + 1) plt.imshow(images[i].reshape((h, w)), cmap=plt.cm.gray) plt.title(titles[i], size=12) plt.xticks(()) plt.yticks(()) eigenfaces = pca.components_.reshape((-1, h, w))[:12] plot_gallery(eigenfaces, ["Eigenface %d" % i for i in range(eigenfaces.shape[0])]) plt.show() ``` 这段代码首先加载了MNIST数据集并将每张图片展平为一个长向量;接着创建了一个PCA对象并对原始高维空间的数据进行了投影得到低维表示;最后通过可视化一些最重要的“特征”,即所谓的‘eigenfaces’,展示了PCA的结果[^1]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值