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

📄 myfsvm.m

📁 些程序是对多类分类的另一种处理方法
💻 M
字号:
%
% 多类fsvm"一对一算法"实例
%
clc 
clear all

n=50;
sigma=0.5;
ker=struct('type','linear');

x1=sigma*randn(1,n)-1.4;           %构造随机样本
x2=sigma*randn(1,n)+0;             %共有三类
x3=sigma*randn(1,n)+2;             %每类随机产生

y1=sigma*randn(1,n)-1.4;
y2=sigma*randn(1,n)+2;
y3=sigma*randn(1,n)-1.4;

xapp=[x1 x2 x3;y1 y2 y3]';           %构造成一训练样本集
yapp=[];

nbclass=size(xapp,1)/n;
%判断类的个数

for i=1:nbclass
    yapp=[yapp i*ones(1,n)];
end
yapp=yapp';



%设置各种参数
c=1000;
lambda = 1e-7;
kerneloption=1;
kernel='linear';
verbose=0;

kerneloptionm.matrix=fsvmkernel(ker,xapp,xapp);%调用核函数
[w,b,nbsv,classifier,pos]=fsvmmulticlass1v1([],yapp,nbclass,c,lambda,kerneloptionm,verbose);

%-------------------产生测试样本----------------------------------
[xtesta1,xtesta2]=meshgrid([-4:0.1:4],[-4:0.1:4]);
 [na,nb]=size(xtesta1);
 xtest1=reshape(xtesta1,1,na*nb);
 xtest2=reshape(xtesta2,1,na*nb);
 xtest=[xtest1;xtest2]';
%-----------------------------------------------------

%投票法
%kerneloptionm.matrix=svmkernel(xtest,kernel,kerneloption,xapp(pos,:));%线性核函数的积
kerneloptionm.matrix=xtest*xapp(pos,:)';
[ypred,maxi,ypred1] = svmmultivaloneagainstone([],[],w,b,nbsv,'numerical',kerneloptionm);%调用投票函数,该函数里构造了模糊因子

 ypredmat=reshape(ypred,na,nb);
%测试输出
contourf(xtesta1,xtesta2,ypredmat);%shading flat
%contourf(xtesta1,xtesta2,ypredmat*20,30);shading flat
style=['x+*.'];
color=['kkkk'];
hold on
for i=0:nbclass-1
    h=plot(xapp(i*n+1:(i+1)*n,1),xapp(i*n+1:(i+1)*n,2),[style(i+1) color(i+1)]);
    set(h,'LineWidth',2);
    hold on
end; 

h=plot(xapp(pos,1),xapp(pos,2),'ok');
set(h,'LineWidth',2);
axis( [ -4 4 -4 4]);
legend('classe 1','classe 2','classe 3','Support Vector');
hold off





⌨️ 快捷键说明

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