clc
clear all
%% 導入數據及處理
load('Data_shuxing')
%數據標準化處理
n = size(Data_shuxing,2);
for i = 1:n
SA(:,i) = (Data_shuxing(:,i)-mean(Data_shuxing(:,i)))/std(Data_shuxing(:,i));
end
%% 計算相關係數矩陣的特徵值和特徵向量
CM = corrcoef(SA); %計算相關係數矩陣
[V, D] = eig(CM); %計算特徵值和特徵向量
for j = 1:n
DS(j,1) = D(n+1-j,n+1-j); %對特徵值按降序進行排序
end
for i = 1:n
DS(i,2) = DS(i,1)/sum(DS(:,1)); %貢獻率
DS(i,3) = sum(DS(1:i,1)/sum(DS(:,1))); %累計貢獻率
end
%% 選擇主成分及對應的特徵向量
T = 0.9; %信息保留率
for K = 1:n
if DS(K,3) >= T
Com_num = K;
break
end
end
% 提取主成分對應的特徵向量
for j = 1:Com_num
PV(:,j) = V(:,n+1-j);
end
%% 輸出結果報告
disp('特徵值及其貢獻率、累積貢獻率')
DS
disp('信息保留率T對應的主成分數')
Com_num
pareto(DS(:,2));%調用 matlab 畫排列圖
xlabel('Principal Component');
ylabel('Variance Explained(%)');
grid on
% % 輸出新的數據
new_data = SA*PV;
save('Data_PCA','new_data') %保存數據
主成分分析---PCA(基於MATLAB)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.