机器学习十大算法之Matlab-9降维算法

降维算法

PCA算法

  • 算法流程:最小的m-l个特征值被舍弃了,这是降维的结果。舍弃部分信息后使得样本的1信息密度变大;2后面的m-l个特征是噪声,有去噪的效果。
    在这里插入图片描述

对数据集进行PCA后再重构

  • 1通过上面算法降维成l个维度l <<m,m为之前的维度。
    在这里插入图片描述
  • 2再进行升维重构
    在这里插入图片描述

PCA降维-Matlab代码

例子1-系统pca做降维pca_mat.m

  • 改例子有计算过程。
%使用pca函数进行降维
X=[1,2;3,3;3,5;5,4;5,6;6,5;8,7;9,8]; %样本矩阵,每行一个样本向量
[coeff,  score,  latent]=pca(X); %主成分分析
coeff, %主成分分量 (每列为一个变换空间中的基向量)
score, %主成分, score(:,1) 为X的一维表示, score为X在变换空间中的二维表示
latent, %X样本协方差矩阵的特征值

例子2-系统pca对简单数据集降维pca2_mat.m

  • 13*4的数据进行降维
clc, clear all, close all
load hald %载入数据集
X=ingredients; %将数据集中的13x4矩阵矩阵赋给X
[coeff,score]=pca(X,'Centered','off'), %调用函数pca, 不对数据中心化

例子3-用fastPCA做降维

  • fastPCA.m
%快速PCA函数
function [V,pcaX]=fastPCA(X,k)
%输入: X--样本矩阵,每行为一个样本
%输出: V--主成分向量
%pcaX--降维后的k维样本特征向量组成的矩阵,每一行一个样本,列数k为降维后的样本特征列数
[n,m]=size(X);
meanV=mean(X); %样本均值向量
Z=(X-repmat(meanV,n,1));
CovM=Z*Z';  %计算协方差矩阵的转置
[V,D]=eigs(CovM,k); %计算CovM的前k个特征值和特征向量
V=Z'*V; %得到协方差矩阵(CovM)'的特征向量
%特征向量归一化为单位特征向量
for i=1:k
    V(:,i)=V(:,i)/norm(V(:,i));
end
pcaX=Z*V; %线性变换(投影)降维至k维
save('PCA.mat','V','meanV'); %保存变换矩阵V和变换原点meanV
  • pca_iris.m对鸢尾属植物数据集降至2维
%用fastPCA函数对鸢尾属植物数据集降至2维
clc, clear all, close all
load fisheriris
X = meas;  Y = species;
[n,m]=size(X);
[V,pcaX]=fastPCA(X,2);
gscatter(pcaX(:,1),pcaX(:,2),Y,'rbm','*vo');

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