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

主成分分析应用实例(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)) %变换矩阵取第2、3列 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)) %变换矩阵取第1、3列 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);

python

运行

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162

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

相关知识

MATLAB鸢尾花数据集K
鸢尾花分类 matlab
主成分分析:PCA的思想及鸢尾花实例实现
将鸢尾花数据导入MATLAB的详细步骤(怎么将鸢尾花数据导入matlab)
MATLAB实现鸢尾花数据集的支持向量机(SVM)分类
探索MATLAB支持向量机分类:从入门到精通
实现花卉分类的 MATLAB 代码及实例
深度学习之基于Matlab的鸢尾花分类
实例四:鸢尾花分类(基于 Scikit
卷积神经网络实现鸢尾花数据分类python代码实现

网址: 主成分分析应用实例(Matlab):鸢尾花分类 https://m.huajiangbk.com/newsview2508853.html

所属分类:花卉
上一篇: 【机器学习实验六】支持向量机(S
下一篇: 数字化转型大趋势下,如何通过数据