function [ ds,com_num,pv,new_score,new_score_s ] = pca_dr( a,t )
%pca_dr 主成分降維及分析函式
% 輸入變數
% a:原始資料(未標準化處理)
% t:設定累積貢獻率的閾值
% 輸出變數
% ds:特徵值及貢獻率
% com_num:閾值t對應的主成分數
% pv:閾值t對應的特徵向量
% new_score:主成分分數(篩選出來的主成分向量的各樣本分數)
% new_score_s:主成分分數排序(第一列為原樣本的排名,第二列為該樣本主成分總分)
%% 原始資料的標準化處理(transfer orginal data to standard data)
a = size(a,1); % get the row number of a
b = size(a,2); % get the column number of a
sa = zeros(size(a));
for i = 1:b
sa(:,i) = (a(:,i)-mean(a(:,i)))/std(a(:,i)); % matrix normalization(標準化後的矩陣)
end%% 計算樣本相關係數矩陣(calculate correlation matrix of a.)
cm = corrcoef(sa); %cm為相關係數矩陣
%% 計算相關係數矩陣的特徵值和特徵向量
% calculate eigenvectors and eigenvalues of correlation matrix.
[v, d] = eig(cm); %v為特徵向量,d為特徵值(對角線)
%% 選擇重要的主成分
% get the eigenvalue sequence according to descending and the corrosponding
% attribution rates and accumulation rates.
% 1.根據下降以及相應的歸屬率和累積率得到特徵值序列。
ds = zeros(b,3);
for j=1:b
ds(j,1) = d(b+1-j, b+1-j); %ds第一列是d中對角線從右下向左上排列後的值
endfor i=1:b
ds(i,2) = ds(i,1)/sum(ds(:,1)); %ds第二列是該特徵值佔特徵值總和的百分比
ds(i,3) = sum(ds(1:i,1))/sum(ds(:,1)); %累積貢獻率
end% 2.計算主成分數量(calculate the numvber of principal components.)
for k = 1:b
if ds(k,3)>=t
com_num = k; %主成分的個數
break;
endend% 3.獲取特徵向量(get the eigenvectors of the com_num principal components)
for j = 1:com_num
pv(:,j) = v(:,b+1-j); %對應主成分個數的幾個特徵向量
end%% 計算主成分得分(calculate the new socres of the orginal items)
new_score = sa*pv;
for i=1:a
total_score(i,2) = sum(new_score(i,:));
total_score(i,1) = i;
endnew_score_s = sortrows(total_score,-2); %-2表示按第二列進行降序排序
%% 輸出樣式舉例
disp('特徵值及貢獻率(ds):')
disp(ds)
disp('閾值t對應的主成分個數(com_num)與特徵向量(pv):')
disp(com_num)
disp(pv)
disp('樣本的主成分分數(new_score):')
disp(new_score)
disp('樣本的主成分分數排序(new_score_s):')
disp(new_score_s)
end
主成分分析Matlab實現
資料匯入及處理 clcclear all a xlsread coach.xlsx b2 h16 資料標準化處理 a size a,1 b size a,2 for i 1 b sa i a i mean a i std a i end 計算相關係數矩陣的特徵值和特徵向量 cm corrcoef s...
Matlab 主成分分析(PCA)
是一種資料降維方法。保留具有代表性的主成分,捨棄比重較小的成分。演算法步驟 matlab 實現 clear all close all clc load data.mat m,n size x step1 預處理資料。均值標準化 零均值 特徵縮放 x x repmat mean x 50,1 s s...
主成分分析
主成分分析 pca 分析乙個隨機向量的中的主成分 主成分一般不是隨機向量中的某乙個分量,而是不同分量的線性組合,根據資訊理論的觀點,資訊的多少與方差有關,所以 主成分是方差最大的幾個成分 主成分分析的方法是求隨機向量的協方差矩陣 用樣本協方差矩陣代替 對於差異較大的資料,可採用相關矩陣代替協方差矩陣...