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

此系列为 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个特征向量进行投影,
这里写图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值