吴恩达老师机器学习笔记主成分分析PCA

接着学习主成分分析,这个算法在之前计量地理学的作业里写过,不过前者稍微啰嗦了一点。

原始二维数据:
在这里插入图片描述
放代码:

load('ex7data1.mat');
[m n]=size(X);
X=(X-mean(X))./std(X); 
sigma=1/m*(X'*X); % 求取协方差矩阵
[U,S,V]=svd(sigma); % 求取特征向量
Ureduce=U(:,1:1); % 这里降为1维数据
z=X*Ureduce; % 投影到1维坐标系
y=z*Ureduce'; % 显示降维后的数据
hold on;
scatter(X(:,1),X(:,2)); %绘制不同类别的点集
scatter(y(:,1),y(:,2));
hold off;

主成分分析得到的一维数据(紫色部分):
在这里插入图片描述
这一点凑篇文章太不值得了,于是接着做第二个练习

2 对人物照片进行主成分分析

原始图像:

在这里插入图片描述
代码如下:

load('ex7faces.mat');
X=X(1:100,:);
[m n]=size(X);
X=(X-mean(X))./std(X); 
sigma=1/m*(X'*X); % 求取协方差矩阵
[U,S,V]=svd(sigma); % 求取特征向量
Ureduce=U(:,1:10); % 这里降为10维数据
z=X*Ureduce; % 投影到1维坐标系
y=z*Ureduce'; % 显示降维后的数据
displayData(y); % 练习给的显示多幅影像的函数
%{
因为显示多幅影像函数太麻烦了,就不写了,
这里写了显示单幅影像意思意思
colormap(gray); % 显示灰度图像
img=X(1,:)./max(abs(X(1,:)));
array=reshape(img,sqrt(n),sqrt(n));
k = imagesc(array, [-1 1]);
%}

结果图像:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_21567935/article/details/83586230