You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mycode/姚安欣/PCA.m

97 lines
1.3 KiB

4 months ago
clc,clear,format short,close all;
load data_mh.mat;
[n,p]=size(x);
%标准化
X=zscore(x);
%协方差矩阵/相关系数矩阵
R=cov(X);
[V,D]=eig(R);%[特征向量,特征值]
lambda=diag(D);
lambda=lambda(end:-1:1);
total_contri=sum(lambda);
cum_contri=cumsum(lambda);
contri_rate=cum_contri/total_contri;
V1=rot90(V)';
disp(V1);
c1=V1(:,1);
c2=V1(:,2);
XX=X*c1;
YY=X*c2;
figure;
scatter(XX, YY, 'filled');
xlabel('第一主成分');
ylabel('第二主成分');
title('主成分得分图');
grid on;
%散点
figure;
scatter(XX,YY,'k.');
figure;
plot(c1, c2, 'o', 'MarkerSize', 8, 'MarkerFaceColor', 'b');
text(c1, c2, cellstr(num2str((1:p)')), 'VerticalAlignment','bottom', 'HorizontalAlignment','right');
xlabel('第一主成分');
ylabel('第二主成分');
title('主成分载荷图');
grid on;
%主成分得分图Score Plot
X = randn(100, 5);
% 主成分分析
[coeff, score, latent, tsquared, explained, mu] = pca(X);
% 绘制前两个主成分的得分图
figure;
scatter(score(:,1), score(:,2));
xlabel('第一主成分');
ylabel('第二主成分');
title('主成分得分图');
grid on;
% 添加数据点标签
text(score(:,1), score(:,2), num2str((1:size(score,1))'), 'FontSize', 8);