您的位置:首页 > 编程语言

Coursera-吴恩达-机器学习-(编程练习7)K均值和PCA(对应第8周课程)

2018-01-16 17:07 941 查看
此系列为 Coursera 网站Andrew Ng机器学习课程个人学习笔记(仅供参考)

课程网址:https://www.coursera.org/learn/machine-learning

exercise 7 —— K-means and PCA

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

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

1 K-means

先从二维的点开始,使用K-means进行分类。



K-means步骤如上,在每次循环中,先对所有点更新分类,再更新每一类的中心坐标。

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

我们要把点分成三类,迭代次数为10次。三类的中心点初始化为(3,3),(6,2),(8,5).

得到如下图像。(中间的图像略去,只展示开始和完成时的图像)

这是初始图像:



进行10次迭代后的图像:image

可以看到三堆点被很好地分成了三类。图片上同时也展示了中心点的移动轨迹。



用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。

用题目中提供的例子,效果大概如下:



2 PCA

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

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

先对例子中的二维向量实现降低到一维。





根据上图可以看出,恢复后的图只保留了其中一个特征向量上的信息,而垂直方向的信息丢失了

Face image dataset

对人脸图片进行dimension reduction。ex7faces.mat中存有大量人脸的灰度图(32 \times 32) , 因此每一个向量的维数是 32 \times 32 = 1024。

如下是前一百张人脸图:



用PCA得到其主成分,将其重新转化为 32\times 32 的矩阵后,对其可视化,如下:(只展示前36个)



取前100个特征向量进行投影,



可以看出,降低维度后,人脸部的大致框架还保留着,但是失去了一些细节。这给我们的启发是,当我们在用神经网络训练人脸识别时,有时候可以用这种方式来提高速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐