最近在学SVM分类,找了一些资料,自己用matlab演示了一遍两类分类问题。
Matlab R2010a,自带的SVM集成了两个函数svmtrain和svmclassify ,这两个函数的功能使用可以查看matlab帮助文档(help svmtrain),一个用来训练样本,一个用来测试分类
matlab代码:
clear,clc
%训练数据20 x 2,20行代表20个训练样本点,第一列代表横坐标,第二列纵坐标
TrainData = [-3 0;4 0;4 -2;3 -3;-3 -2;1 -4;-3 -4;0 1; -1 0;...
2 2; 3 3; -2 -1;-4.5 -4; 2 -1;5 -4;-2 2;-2 -3;0 2;1 -2;2 0];
%Group 20 x 1, 20行代表训练数据对应点属于哪一类(1类,-1类)
Group = [1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1]';
TestData = [3 -1;3 1;-2 1;-1 -2;2 -3;-3 -3];%测试数据
SVMStruct = svmtrain(TrainData,Group,'Showplot',true); % train
Group = svmclassify(SVMStruct,TestData,'Showplot',true); % test
hold on;
plot(TestData(:,1),TestData(:,2),'ro','MarkerSize',12); %