資源簡介
KPCA的MATLAB代碼,用于特征提取十分有效。
代碼片段和文件信息
function?[train_kpcatest_kpca]?=?kpca(traintestthresholdrbf_var)
%%?函數默認設置
if?nargin?<4
rbf_var=10000;%?
end
if?nargin?<3
threshold?=?90;
end
%%?數據處理
patterns=zscore(train);?%訓練數據標準化
test_patterns=zscore(test);?%測試數據標準化
train_num=size(patterns1);?%train_num是訓練樣本的個數
test_num=size(test_patterns1);%test_num是測試樣本的個數
cov_size?=?train_num;?%cov_size是訓練樣本的個數
%%?計算核矩陣
for?i=1:cov_size
for?j=i:cov_size
K(ij)?=?exp(-norm(patterns(i:)-patterns(j:))^2/rbf_var);?%核函數?rbf_var???
K(ji)?=?K(ij);
end
end
unit?=?ones(cov_size?cov_size)/cov_size;%cov_size是樣本的個數
%%?中心化核矩陣
K_n?=?K?-?unit*K?-?K*unit?+?unit*K*unit;%?中心化核矩陣
%%?特征值分解
[evectors_1evaltures_1]?=?eig(K_n/cov_size);
[xindex]=sort(real(diag(evaltures_1)));?%sort每行按從小到大排序,x為排序后結果,index為索引
evals=flipud(x)?;%?flipud函數實現矩陣的上下翻轉
index=flipud(index);
%%?
評論
共有 條評論