⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kpcasvm.m

📁 粒子群算法
💻 M
字号:
function [maxerror,meanerror,stderror] = KPCASVM(T,G,C,P)%UNTITLED1 Summary of this function goes here%  Detailed explanation goes here% T= 77.7149       % G=18.6755% C=65.8118 % P=64.6552b=f2b(T,[0 10],8);% tic;% H1=xlsread('tading.xls',1,'A1:H123');H=xlsread('testy.xls',1,'A1:J60');H1=[];for L=1:8if b(L)==1    H1=[H1,H(:,L)];endendH1=[H1,H(:,9:10)];  %加上最好两列输出值len=size(H1,1);Vol=size(H1,2);H2=H1(:,Vol-1);delta=(max(H2)-min(H2));  %反归一delta1=min(H2); %  [b,a]= butter(5,0.8);%  H1=filtfilt(b,a,H);%   % % %  k=0;% P=zeros(len,9);%  for j=1:9%     delta= std(H1(:,j));%     avg=mean(H1(:,j));%      for i=1:len-k%          if i>len-k%              break%          end%          temp= H1(i,j)-avg;%          if temp>=3*delta%              P(i,j)=1;%              H1=[H1(1:i-1,:);H1(i+1:len-k,:)];%             %              k=k+1;%          end%      end%  end%  [i,j]=find(P)  data=H1; data=(data-ones(size(data,1),1)*min(data))./(ones(size(data,1),1)*(max(data)-min(data)));  H1=data-ones(size(data,1),1)*mean(data);  k=1; for L=1:len              switch L         case 1             A1=H1(2:len,1:Vol-2);             B1=H1(2:len,Vol-1);             C1=H1(1,1:Vol-2);             D1=H1(1,Vol-1);         case len             A1=H1(1:len-1,1:Vol-2);             B1=H1(1:len-1,Vol-1);             C1=H1(len,1:Vol-2);             D1=H1(len,Vol-1);         otherwise             A1=[H1(1:L-1,1:Vol-2);H1(L+1:len,1:Vol-2)];             B1=[H1(1:L-1,Vol-1);H1(L+1:len,Vol-1)];             C1=H1(L,1:Vol-2);             D1=H1(L,Vol-1);     end   %  A1=H1(1:40,1:8);%  B1=H1(1:40,9);%  C1=H1(41:60,1:8);%  D1=H1(41:60,9);            % max_ev =14;  %选择主元个数 tading       max_ev =21;  %选择主元个数      rbf_var = 1.3;  %髙斯函数的参数      cov_size=size(A1,1);     %样本个数      for i=1:cov_size,    %得到K          for j=i:cov_size,              K(i,j) = exp(-norm(A1(i,:)-A1(j,:))^2/rbf_var);              K(j,i) = K(i,j);          end      end      unit = ones(cov_size, cov_size)/cov_size;      % centering in feature space!      K_n = K - unit*K - K*unit + unit*K*unit;      [evecs,evals] = eig(K_n);     % A2=evecs;      evals = real(diag(evals));      for i=1:cov_size,          evecs(:,i) = evecs(:,i)/(sqrt(evals(i)));         end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%      test_num=size(A1,1);      unit_test = ones(test_num,cov_size)/cov_size;      K_test = zeros(test_num,cov_size);      for i=1:test_num,          for j=1:cov_size,              K_test(i,j) = exp(-norm(A1(i,:)-A1(j,:))^2/rbf_var);          end      end      K_test_n = K_test - unit_test*K - K_test*unit + unit_test*K*unit;      test_features = zeros(test_num, max_ev);      test_features = K_test_n * evecs(:,1:max_ev);      A2=test_features;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%      test_num=size(C1,1);      unit_test = ones(test_num,cov_size)/cov_size;      K_test = zeros(test_num,cov_size);      for i=1:test_num,          for j=1:cov_size,              K_test(i,j) = exp(-norm(C1(i,:)-A1(j,:))^2/rbf_var);          end      end      K_test_n = K_test - unit_test*K - K_test*unit + unit_test*K*unit;      test_features = zeros(test_num, max_ev);      test_features = K_test_n * evecs(:,1:max_ev);      C2=test_features;      %       model = svmtrain(B1, A2, '-s 3 -t 2 -g 0.11 -c 50 -p 0.05');%   model = svmtrain(B1, A2, '-s 3 -t 2 -g 0.9876  -c 21.1079 -p 1.1029 ');% G=0.11;% C=50;% P=0.05;      str= ['-s 3 -t 2 -g ', num2str(G),  ' -c ' num2str(C) ' -p ' num2str(P)];      model = svmtrain(B1, A2, str);      [y, accuracy] = svmpredict(D1, C2, model);      %        y= y*delta+delta1;   %        if L==9%        y=y-8;%        end%        x=abs(H2(L)-y)/H2(L);%        x=abs((D1-y)/D1);      if k==1          Y=y;%           X=x;          D=D1;          k=0;      else          Y=[Y;y];%           X=[X;x];          D=[D;D1];      end       end%   if  size(Y,1)==0%            G%            C%            P%        end Y=Y+mean(data(:,Vol-1));%  D=data(:,9); Y= Y*delta+delta1;%  D= D*delta+delta1; X=abs(H2-Y)./H2;%  X=abs(D-Y)./D;% toc;% t=toc;meanerror=mean(X);maxerror=max(X);stderror=std(X);% save('error.mat','meanerror','maxerror','stderror');%  X=abs(D1-y);%  error1=sqrt(sum(X.^2)/test_num)%  error2=max(abs(D1-y))  % Y=ones(size(X,1),1)*mean(X); %error=sqrt(sum((X-Y).^2)/test_num)%  %  y= y*(max(H2)-min(H2))+min(H2);   %反归一 %  X=abs(D2-y);%  error1=sqrt(sum(X.^2)/test_num)%  error2=max(abs(D2-y))%  %  T1=[50:1:100]';%  T2=[50:1:100]';% %  V=[1,60,0,0.2];% plot(H2,Y,'bd','LineWidth',2 );% hold on% plot(T1,T2, 'k-','LineWidth',2 );% hold on% ylabel('实际值\bf%');% xlabel('测量值\bf%');% plot(T1+5,T2, 'k-','LineWidth',2 );% axis(V);%  plot(H2,'r--','LineWidth',2 );% %  axis(V);%  hold on%  plot(Y,'b','linewidth',2);%  axis(V);      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -