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

📄 myprsvmtrain.m

📁 模式识别,对iris数据进行分类,svm算法
💻 M
字号:
function [SV Alpha Thsvm]=MyPRSVMTrain(Traindata,Kerneltype,C,Sigma)
Y=Traindata(:,1);
n=length(Y);
K=kernel(Traindata,Kerneltype,Pexp,Sigma);
H=(Y*Y').*K;
H=H+1e-10*eye(size(H));
f=-ones(n,1);
A=[];
b=[];
Aeq=Y';
beq=0;
lb=zeros(n,1);
ub=C*ones(n,1);
a0=zeros(n,1);
options=optimset;    options.LargeScale='off';    options.Display='off';
Alpha=quadprog(H,f,A,b,Aeq,beq,lb,ub,a0,options); %用二次规划函数求解对偶函数的最优解

svsc=find(Alpha>1e-5);
Al=Alpha(svsc);
SV=Traindata(svsc,:);
for i=1:length(svsc)
    if(Y(svsc(i))==1)
        r=svsc(i);
        break;
    end
end
for j=1:length(svsc)
    if(Y(svsc(j))==-1)
        s=svsc(j);
        break;
    end
end
Starb=Alpha.*Y.*(K(:,r)+K(:,s));
Thsvm=-0.5*sum(Starb);
Alpha=Al;

function K=kernel(Traindata,Kerneltype,Sigma)
[n dim]=size(Traindata);
temp=Traindata(:,2:dim);
switch Kerneltype
    case 'linear'
        K=temp*temp';
    case 'poly'
        K=(temp*temp'+1).^2;
    case 'gauss'
        K=zeros(n,n);
        for i=1:n
            for j=1:n
                t=temp(i,:)-temp(j,:);
                K(i,j)=exp((-0.5*(t*t'))/Sigma.^2);
            end
        end
    otherwise
        K=0;
end

⌨️ 快捷键说明

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