%基于相关系数矩阵
clear;
load suju.mat;
stdr=std(dataset); %求个变量的标准差
[n,m]=size(dataset); %定义矩阵行列数
sddata=dataset./stdr(ones(n,1),:); %将原始数据采集标准化
sddata %输出标准化数据
[p,princ,eigenvalue,t2]=princomp(sddata);
% p 每列是相应的特征向量数值,也即是每个组成分在各原是变量上的系数
%第一列是想对应于最大的特征值的特征向量 依此类推 princ n行m列矩阵
%是代表第一条信息的m个主成分分值
%eigenvalue 1维m元列向量,每条信息到样本中心的距离
per=100*eigenvalue/sum(eigenvalue) %求出各主成分的贡献率
cumsum(per) %列出各主成分的累积贡献率
figure(1)
pareto(per); %将贡献率绘成直方图
figure(2)
plot(eigenvalue,'r+'); %绘制方差贡献散点图
hold on
%保持图形
plot(eigenvalue,'g-'); %绘制方差贡献山麓图
p3=p(:,1:10) %提取前10个主成分得分系数
sc=princ(:,1:10) %提取前10个主成分得分值
评论0