此系列为 Coursera 网站Andrew Ng机器学习课程个人学习笔记(仅供参考)
课程网址:https://www.coursera.org/learn/machine-learning

exercise 7 —— K-means and PCA

在此下载Coursera-吴恩达-机器学习-全部编程练习答案

在本练习中,您将实现K均值聚类算法并将其应用于压缩图像。 在第二部分中,您将使用主成分分析来查找面部图像的低维表示。

1 K-means

先从二维的点开始,使用K-means进行分类。
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)
K-means步骤如上,在每次循环中,先对所有点更新分类,再更新每一类的中心坐标。

ex7.m中提供了一个例子,其中中 K 已经被手动初始化过了。

我们要把点分成三类,迭代次数为10次。三类的中心点初始化为(3,3),(6,2),(8,5).
得到如下图像。(中间的图像略去,只展示开始和完成时的图像)
这是初始图像:
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)

进行10次迭代后的图像:image
可以看到三堆点被很好地分成了三类。图片上同时也展示了中心点的移动轨迹。
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)

用K-means进行图片压缩。
用一张128\times 128的图片为例,采用RGB,总共需要128\times 128 \times 24 = 393216个bit。
这里我们对他进行压缩,把所有颜色分成16类,以其centroid对应的颜色代替整个一类中的颜色,可以将空间压缩至16\times 24 + 128\times 128 \times 4 = 65920 个bit。
用题目中提供的例子,效果大概如下:
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)

2 PCA

在这个练习中,您将使用主成分分析(PCA)来执行降维。 您将首先尝试使用示例2D数据集来直观了解PCA如何工作,然后将其用于5000张面部图像数据集的较大数据集。

所提供的脚本ex7 pca.m将帮助您逐步完成练习的前半部分。

先对例子中的二维向量实现降低到一维。
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)
根据上图可以看出,恢复后的图只保留了其中一个特征向量上的信息,而垂直方向的信息丢失了

Face image dataset

对人脸图片进行dimension reduction。ex7faces.mat中存有大量人脸的灰度图(32 \times 32) , 因此每一个向量的维数是 32 \times 32 = 1024。
如下是前一百张人脸图:
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)

用PCA得到其主成分,将其重新转化为 32\times 32 的矩阵后,对其可视化,如下:(只展示前36个)
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)

取前100个特征向量进行投影,
Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)

可以看出,降低维度后,人脸部的大致框架还保留着,但是失去了一些细节。这给我们的启发是,当我们在用神经网络训练人脸识别时,有时候可以用这种方式来提高速度。

相关文章:

  • 2021-07-08
  • 2021-09-23
  • 2021-10-24
  • 2021-04-03
  • 2022-01-07
  • 2021-04-02
  • 2021-04-16
猜你喜欢
  • 2021-06-24
  • 2021-06-09
  • 2021-10-23
  • 2021-06-13
  • 2021-12-27
  • 2021-04-09
  • 2021-05-05
相关资源
相似解决方案