• 大小: 201KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C/C++
  • 标签: PCA  KPCA  

资源简介

PCA和KPCA的Matlab和C++程序,其中核函数使用的是高斯核函数

资源截图

代码片段和文件信息

clc
clear
%load(‘studydata.txt‘)
%x=studydata;
load(‘test.txt‘)
x=test;
psize=size(x);
percent=0.95; %KPCA中特征值的提取效率
d=0.98;  %特征值成分的提取比重
var=287;
sign=1; %采用gauss核
tic
[eigenvaluekernelmatrixeigenvectorsproject_invectorsleleijit]=kpca(xpercentvarsign); %未对样本进行筛选的KPCA
disp(‘KPCA所用时间‘);
toc
groupnumber=3;  %样本分组的组数
tic
l=floor(psize(1)/groupnumber);  %重采样进行重新分组
i=2;
k(1)=1;
while i<=groupnumber+1
    k(i)=(i-1)*l;
    i=i+1;
    if i*l>psize;
        k(i)=psize(1);
        break;
    end
end
xx=x(k(1):k(2):);    
[eigenvaluekleigenvectorsakpcaproject_invectorsleleijit]=kpca(xxpercentvarsign); %先对第一组处理

if t==1
    sume=abs(eigenvectors(:1));
else
    sume=abs(eigenvectors(:1))+abs(eigenvectors(:2));
end

[valuegetnumberrestdata]=shaixuan(xxsumed); %对样本进行筛选
ter_xx=restdata; %记录获取的新样本数据
pvalue=value;  %记录获取的样本编号
newdatanumber=getnumber;%记录获取的样本数目
%pvalue
for j=2:groupnumber %对每一小组样本执行KPCA并对样本进行筛选
    xx=x(k(j)+1:k(j+1):);    
    [eigenvaluekleigenvectorsakpcaproject_invectorsleleijit]=kpca(xxpercentvarsign);    
    if t==1
    sume=abs(eigenvectors(:1));  
    else
    sume=abs(eigenvectors(:1))+abs(eigenvectors(:2));
    end

    [valuegetnumberrestdata]=shaixuan(xxsumed); %对样本进行筛选
    ter_xx=[ter_xx;restdata];    
    for ii=1:getnumber
        value(ii)=value(ii)+k(j);
    end   
    pvalue=[pvalue;value];
    newdatanumber=getnumber+newdatanumber;
end
%disp(‘分组对样本进行提取之后的样本集是‘);
%ter_xx
[eigenvalue2kleigenvectors2project_invectors2le2leiji2t2]=kpca(ter_xxpercentvarsign);  %再次调用KPCA
for i=1:newdatanumber
    newkernermatrix(i:)=kernelmatrix(pvalue(i):); %获取索取样本对应核矩阵的行数据
end
newproject=eigenvectors2‘*newkernermatrix; %计算经AKPCA的运算后的投影
newproject=newproject‘;
disp(‘AKPCA所用时间‘);
toc
newdatanumber
disp(‘AKPCA所得的特征投影为‘);
newproject
%save ‘newproject.txt‘ newproject  -ASCII
sut=abs(project_invectors(:1))-abs(newproject(:1)); %求解误差
sut=abs(sut‘./project_invectors(:1)‘);
disp(‘经过AKPCA第一投影每一项的标准误差为‘)
sut
hold on
subplot(221);
plot(project_invectors(:1)‘project_invectors(:2)‘‘.‘);
title(‘KPCA(gauss核)的前两个主分量的分布‘);
subplot(222)
percent_spca=100*le;
pareto(percent_spca);
title(‘KPCA特征值的累积贡献率‘);
subplot(223);
plot(newproject(:1)‘newproject(:2)‘‘.‘);
title(‘AKPCA(gauss核)的前两个主分量的分布‘);
subplot(224)
percent_spca=100*le2;
pareto(percent_spca);
title(‘AKPCA特征值的累积贡献率‘);
hold off

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2007-06-02 19:15  毕设matlab和c++\
     文件        2528  2007-05-31 21:03  毕设matlab和c++\fenzuAKPCA.asv
     文件        2696  2007-06-01 21:39  毕设matlab和c++\fenzuAKPCA.m
     文件        2035  2007-05-31 21:23  毕设matlab和c++\fggfgh.asv
     文件        2035  2007-05-31 21:24  毕设matlab和c++\fggfgh.m
     文件         177  2007-04-18 22:37  毕设matlab和c++\kernel.m
     文件        1605  2007-05-31 19:00  毕设matlab和c++\kpca.m
     文件         330  2007-06-01 21:54  毕设matlab和c++\kpcakongxiresult436.txt
     文件        1729  2007-05-31 19:02  毕设matlab和c++\pca.m
     文件         330  2007-05-30 10:01  毕设matlab和c++\pcakongxiresult.txt
     文件         795  2007-05-31 19:18  毕设matlab和c++\shaixuan.asv
     文件         792  2007-06-01 08:40  毕设matlab和c++\shaixuan.m
     文件        1551  2007-04-16 09:20  毕设matlab和c++\studydata.txt
     文件        9277  2007-05-17 13:17  毕设matlab和c++\test.txt
     文件        1380  2007-05-31 19:48  毕设matlab和c++\testAKPCA.asv
     文件        1639  2007-06-01 22:05  毕设matlab和c++\testAKPCA.m
     文件         483  2007-05-31 16:29  毕设matlab和c++\testkernelparameter.m
     文件        1313  2007-05-31 19:02  毕设matlab和c++\test_pca_and_kpca.asv
     文件        1316  2007-05-31 19:03  毕设matlab和c++\test_pca_and_kpca.m
     目录           0  2007-06-02 19:15  毕设matlab和c++\单洁毕业设计C++程序5.28\
     目录           0  2007-06-02 19:15  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\
     文件      441629  2007-06-02 18:59  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\eigen.txt
     文件           3  2007-06-02 18:59  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\gaussparameter.txt
     文件        2117  2007-06-02 18:56  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpca.cpp
     文件        3377  2007-06-02 18:51  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpca.dsp
     文件         516  2007-06-02 19:15  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpca.dsw
     文件       11033  2007-06-02 18:51  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpca.h
     文件       58368  2007-06-02 19:15  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpca.ncb
     文件       48640  2007-06-02 19:15  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpca.opt
     文件        1246  2007-06-02 18:56  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpca.plg
     文件        7257  2007-06-02 18:59  毕设matlab和c++\单洁毕业设计C++程序5.28\kpca\kpcaproject.txt
............此处省略15个文件信息

评论

共有 条评论