核主成分matlab,核主成分分析代码解惑,谢谢

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

clc

clear

load('test.txt')

Z=test;

psize=size(Z);

m=psize(2);

n=psize(1);

l=ones(m,m);

for i=1:m

y(i)=0;

for j=1:n

y(i)=y(i)+Z(j,i);

end

y(i)=y(i)/n; %样本均值

endfor i=1:m

s(i)=0;

for k=1:n

s(i)=s(i)+(Z(k,i)-y(i))*(Z(k,i)-y(i));

end

s(i)=sqrt(s(i)/(n-1)); %样本标准差

endfor i=1:m

for j=1:n

XX(j,i)=(Z(j,i)-y(i))/s(i); %标准化处理

end

endx=XX;

percent=0.98; %KPCA中特征值的提取效率

d=0.98; %特征值成分的提取比重

var=287;

sign=1; %采用gauss核

tic

[eigenvalue,kernelmatrix,eigenvectors,project_invectors,le,leiji,t]=kpca(x,percent,var,sign); %未对样本进行筛选的KPCA

disp('KPCA所用时间');

toc

groupnumber=2; %样本分组的组数

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),:);

[eigenvalue,kl,eigenvectors,akpcaproject_invectors,le,leiji,t]=kpca(xx,percent,var,sign); %先对第一组处理

if t==1

sume=abs(eigenvectors(:,1));

else

sume=abs(eigenvectors(:,1))+abs(eigenvectors(:,2));

end

[value,getnumber,restdata]=shaixuan(xx,sume,d); %对样本进行筛选

ter_xx=restdata; %记录获取的新样本数据

pvalue=value; %记录获取的样本编号

newdatanumber=getnumber;%记录获取的样本数目

%pvalue

for j=2:groupnumber %对每一小组样本执行KPCA,并对样本进行筛选

xx=x(k(j)+1:k(j+1),:);

[eigenvalue,kl,eigenvectors,akpcaproject_invectors,le,leiji,t]=kpca(xx,percent,var,sign);

if t==1

sume=abs(eigenvectors(:,1));

else

sume=abs(eigenvectors(:,1))+abs(eigenvectors(:,2));

end

[value,getnumber,restdata]=shaixuan(xx,sume,d); %对样本进行筛选

ter_xx=[ter_xx;restdata];

for ii=1:getnumber

value(ii)=value(ii)+k(j);

end

由于是小白,直接照抄的别人代码,但是shaixuan显示未定义,知道这里有问题,但是不知道怎么改,求教各位。谢谢。

4f7938504b095b84eac5d06f9d1ee30c.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值