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

📄 lploo.asv

📁 一个我自己编写的求解线性支持向量机的matlab代码
💻 ASV
字号:
function lploo(C)
varepsilon=0.01;
l=10;
x=linspace(-10,10,l)
xi=randn(1,l);
number=length(x'*x);
xi3=0.1.*xi;
y3=sin(x+exp(-20.))./(x+exp(-20.))+xi3;
sum=[];
% sigma=[0.1:0.2:2,2:1:10,100,200];
%  C=[0.1:0.2:2,2:30:150,200,300];
% C=[1,2]
sigma=[1,2,3]
% nC=length(C)
nsigma=length(sigma);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%参   数   选    择
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for kk=1:nsigma
    p1=sigma(kk);
loosum=0;
for loo=1:number
    xloo=[x(1:(loo-1)),x((loo+1):number)];
    yloo=[y3(1:(loo-1)),y3((loo+1):number)];
    l=number-1;
Q=rbfker(xloo',p1,0)
% yueshu 1
E=-1.*eye(l);
for i=1:l
    B1(i,:)=[Q(:,i);-1.*Q(:,i);E(:,i)]';
end 
%yueshu 2
for i=1:l
    B2(i,:)=[-1.*Q(:,i);Q(:,i);E(:,i)]';
end 
EE=eye(2.*l);
b=[yloo';-1.*yloo']+varepsilon;
AA=[B1;B2];
for i=1:(2.*l)
    if b(i)<0 
        EE(i,i)=-1;b(i)=abs(b(i));
        AA(i,:)=-1.*AA(i,:);
    end 
end 
A=[AA';EE']';
f=[ones(2.*l,1);C*ones(l,1);zeros(2.*l,1)];
lb=zeros(5*l,1);
[alpha,fval]=linprog(f,[],[],A,b,lb);
floo=0.;
for j=1:l
        floo=floo+(alpha(j)-alpha(j+l)).*exp(-1.*(dot(x(j)-x(loo),x(j)-x(loo)))./(p1.^2));
    end 
 loosum=loosum+abs(floo-y3(loo));
end 
sum(kk)=loosum;
end 
sumback=sum;
for i=1:(nsigma-1)
    if sum(i+1)>x(i) tidai=sum(i+1);sum(i+1)=sum(i);sum(i)=tidai;
        jihao=i;
    else jihao=i+1;
    end 
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%  选    择    完    毕
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
p1=sigma(jihao),
l=number;
Q=rbfker(x',p1,0)
% yueshu 1
E=-1.*eye(l);
for i=1:l
    B11(i,:)=[Q(:,i);-1.*Q(:,i);E(:,i)]';
end 
%yueshu 2
for i=1:l
    B22(i,:)=[-1.*Q(:,i);Q(:,i);E(:,i)]';
end 
EE=eye(2.*l);
b=[y3';-1.*y3']+varepsilon;
AA=[B11;B22];
for i=1:(2.*l)
    if b(i)<0 
        EE(i,i)=-1;b(i)=abs(b(i));
        AA(i,:)=-1.*AA(i,:);
    end 
end 
A=[AA';EE']';
f=[ones(2.*l,1);C.*ones(l,1);zeros(2.*l,1)];
lb=zeros(5*l,1);
[alpha,fval]=linprog(f,[],[],A,b,lb);
fprintf('fval =%f',fval);
xprime=linspace(-10,10,100);
for i=1:100
    ff(i)=0;
    for j=1:l
        ff(i)=ff(i)+(alpha(j)-alpha(j+l)).*exp(-1.*(dot(x(j)-xprime(i),x(j)-xprime(i)))./(p1.^2));
    end 
end 
y=sin(xprime+exp(-20.))./(xprime+exp(-20.));
plot(x,y3,'.');
hold on;
plot(xprime,y,'r')
plot(xprime,ff,'g')
hold on;
for i=1:nsigma
fprintf('%f ',sumback);

fprintf('optimal sigma = %f ',sigma(jihao) );

⌨️ 快捷键说明

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