支持向量机的分类

%
%  SVM Classification 2D examples


clear all
close all
clc


n = 100; 
sigma=0.3;


[Xapp,yapp,xtest,ytest]=datasets('gaussian',n,0,sigma);%产生n个高斯分布的随机样本数据
Xapp=single(Xapp);
[Xapp]=normalizemeanstd(Xapp);%对数据进行归一化
plot(Xapp(:,1),Xapp(:,2),'.');
axis([-3.5 3.5 -3.5 3.5])
%%


 
lambda = 1e-7;  
C = 10;



 kernel='gaussian';   %支持向量机的核函数
 kerneloption=1;
 
[xsup,w,w0,pos,tps,alpha] = svmclass(Xapp,yapp,C,lambda,kernel,kerneloption,1); 
%[xsup,w,w0,pos,tps,alpha] = svmclassLS(Xapp,yapp,C,lambda,kernel,kerneloption,1,1,100); 

ypredapp = svmval(Xapp,xsup,w,w0,kernel,kerneloption,1);

%------- Building a 2D Grid for function evaluation -------------------------
[xtest1 xtest2]  = meshgrid([-1:.05:1]*3.5,[-1:0.05:1]*3); 
nn = length(xtest1); 
Xtest = [reshape(xtest1 ,nn*nn,1) reshape(xtest2 ,nn*nn,1)]; 



%--------------  Evaluating the decision function
ypred = svmval(Xtest,xsup,w,w0,kernel,kerneloption,[ones(length(Xtest),1)]);
ypred = reshape(ypred,nn,nn); 
 
%--------------- plotting
figure(1); 
clf; 
%contourf(xtest1,xtest2,ypred,50);shading flat;
hold on
[cc,hh]=contour(xtest1,xtest2,ypred,[-1  0 1],'k');
clabel(cc,hh); 
set(hh,'LineWidth',1);
h1=plot(Xapp(yapp==1,1),Xapp(yapp==1,2),'+r'); 
set(h1,'LineWidth',1);

h2=plot(Xapp(yapp==-1,1),Xapp(yapp==-1,2),'db'); 
set(h2,'LineWidth',1);
h3=plot(xsup(:,1),xsup(:,2),'ok'); 
set(h3,'LineWidth',1);

axis([-3.5 3.5 -3 3]); 

 

你可能感兴趣的:(支持向量机的分类)