主成分分析应用实例(Matlab):鸢尾花分类

1、主成分分析(PCA)简介

PCA(principal components analysis)即主成分分析技术,又称主分量分析。主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标,其计算流程如下:
在这里插入图片描述
(来源于课程展示,直接截PPT了)
一个简单计算实例如下:
在这里插入图片描述

本次采用PCA技术对鸢尾花进行降维,并分析其降维效果,在UCI数据集网站下载得到的数据集如下:
在这里插入图片描述

鸢尾花数据简介:
在这里插入图片描述
不同特征描述下的分类情况如下:
在这里插入图片描述
数据集下载地址:http://archive.ics.uci.edu/ml/datasets/Iris

2、实验结果

计算得到的特征向量矩阵如下(按列):
在这里插入图片描述
选第1、2列特征向量做变换矩阵:
在这里插入图片描述
选第1、3列特征向量做变换矩阵:
在这里插入图片描述
选第2、3列特征向量做变换矩阵(分类效果较差):
在这里插入图片描述
选取不同特征向量得到的主成分占比:
在这里插入图片描述
可以发现第一列特征向量的主成分占比最大

3、实验代码及说明(Matlab)

%%%%需要事先导入iris数据集X
[M,N] = size(X); %%%数据集的维度
figure;                  
for i=1:M
  for j=1:i-1
%      subplot(3,2,(i-1)+2*(j-1));
    if i==4&&j==3
        subplot(3,2,6);
    else
        subplot(3,2,(i-1)+2*(j-1));
    end
     scatter(X(i,:),X(j,:),7,y,'filled');
     xlabel(sprintf('x%g',i)); ylabel(sprintf('x%g',j));
  end
end
[V,W] = pca2(X);%计算特征向量及特征值,V为特征向量,W为特征值
mn = mean(X,2);%每行平均值
newX = X - repmat(mn,1,N);%编码,减去每行平均值
%变换矩阵取前两列
P = V(:,1:2);
Z = P'*newX;
C = repmat(mn,1,N)+P*Z;%%解码
q2 = norm(W(1:2))^2/norm(W)^2;%%求主成分
figure(2);
scatter(C(1,:),C(2,:),20,y,'filled')%%绘制散点图
xlabel('V1'); ylabel('V2')
title(sprintf('变换矩阵取第1、2列, 主成分占比为 %.4g%% ',100*q2))
%变换矩阵取第23列
P = V(:,2:3);
Z = P'*newX;
C = repmat(mn,1,N)+P*Z;
q2 = norm(W(2:3))^2/norm(W)^2;%%求主成分
figure(3);
scatter(C(2,:),C(3,:),17,y,'filled')
xlabel('V2'); ylabel('V3')
title(sprintf('变换矩阵取第2、3列, 主成分占比为 %.4g%% ',100*q2))
%变换矩阵取第13列
P = V(:,[1,3]);
Z = P'*newX;
C = repmat(mn,1,N)+P*Z;
q2 = norm(W([1,3]))^2/norm(W)^2;%%求主成分
figure(4);
scatter(C(1,:),C(3,:),20,y,'filled')
xlabel('V1'); ylabel('V3')
title(sprintf('变换矩阵取第1、3列, 主成分占比为 %.4g%% ',100*q2))

%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [V,W] = pca2(data)
[M,N] = size(data);
% 减去每个维度的平均值
mn = mean(data,2);%%每行平均值
data = data - repmat(mn,1,N);%%减去每行平均值
% 计算协方差
covariance = 1 / (N-1) .* data * data';
%计算特征值
[V, W] = eig(covariance);
% 计算对应的特征向量
W = diag(W);
% 按特征值大小排列特征向量
[WW, rank] = sort(-1*W);
W = W(rank);
V = V(:,rank);

PCA作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩、去噪,而且计算还简单,就是求特征值和特征向量,使用起来非常方便
在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>