資源簡(jiǎn)介
pca降維,直接運(yùn)行,你把你里面的數(shù)據(jù)換成你自己的就可以啦,注意里面的注解,歡迎下載,你指的擁有,可以的話,歡迎打分,謝謝!
代碼片段和文件信息
function?[C?y]?=?myPCA(x)
%對(duì)矩陣用主成分分析法(PCA)進(jìn)行降維,得到白化矩陣和降維后的矩陣
%輸入?yún)⒘浚?br/>%x-----待處理的矩陣
%輸出參量:
%C-----白化矩陣
%y-----降維后的矩陣
load(‘高維特征.mat‘)
x=features(:1:30)‘;
mat1=x;?????????????????????????????????????%x的行數(shù)代表的是特征個(gè)數(shù),列數(shù)代表的是樣本數(shù)
[mn]?=?size(mat1);
ref_mean?=?mean(mat12);????????????????????%求矩陣mat1每行的均值
X?=?mat1?-?repmat(ref_mean1n);????????????%mat1的每個(gè)元素減去對(duì)應(yīng)行的均值,以便求協(xié)方差
A?=?X‘*X;
[V?D]?=?eig(A);?????????????????????????????%求特征值和特征向量
D_diag?=?diag(D);
[numd]?=?find(D_diag<0);????????????????????%去除因擾動(dòng)造成的負(fù)特征值及其對(duì)應(yīng)的特征向量?
D_diag(numd)?=?[];
V(:numd)?=?[];
[D_sort?D_index]?=?sort(-D_diag);????????????%特征值排序
D_sort?=?-D_sort;
%以總方差的70%為閾值,選取特征向量和特征值
D_pro?=?cumsum(D_sort)./sum(D_sort);
num?=?find(D_pro>0.9);???????????????????????%找到累計(jì)方差大于總方差90%的值所在的位置
T_num?=?num(1);??????????????????????????????%閾值所在的位置(以排序后的特征值為參照)
D_select?=?D_sort(1:T_num);??????????????????%去除較小的特征值,得到有效特征值(已排序)
D_index?=?D_index(1:T_num);??????????????????%得到有效特征值的序號(hào)
V_select?=?zeros(size(V1
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-10-15?11:16??pca降維\
?????文件????????1503??2018-10-15?14:06??pca降維\myPCA.m
?????文件??????117313??2018-06-17?15:39??pca降維\高維特征.mat
評(píng)論
共有 條評(píng)論