• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: Matlab
  • 标签: SVM  

资源简介

用matlab编程实现支持向量机分类,核函数选取,超平面建立等

资源截图

代码片段和文件信息

%主函数
clear all;
close all;
C = 10;
kertype = ‘linear‘;
%训练样本
n = 50;
randn(‘state‘6);
x1 = randn(2n);    %2行N列矩阵
y1 = ones(1n);       %1*N个1
x2 = 5+randn(2n);   %2*N矩阵
y2 = -ones(1n);      %1*N个-1
 
figure;
plot(x1(1:)x1(2:)‘bx‘x2(1:)x2(2:)‘k.‘); 
axis([-3 8 -3 8]);
hold on;
 
X = [x1x2];        %训练样本d*n矩阵,n为样本个数,d为特征向量个数
Y = [y1y2];        %训练目标1*n矩阵,n为样本个数,值为+1或-1
svm = svmtrain(XYkertypeC);
plot(svm.Xsv(1:)svm.Xsv(2:)‘ro‘);

%测试
[x1x2] = meshgrid(-2:0.05:7-2:0.05:7);  %x1和x2都是181*181的矩阵
[rowscols] = size(x1);  
nt = rows*cols;                  
Xt = [reshape(x11nt);reshape(x21nt)];
Yt = ones(1nt);
result = svmtest(svm Xt Yt kertype);

Yd = reshape(resultYrowscols);
contour(x1x2Yd‘m‘);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function svm = svmtrain(XYkertypeC)

options = optimset;    % Options是用来控制算法的选项参数的向量
options.LargeScale = ‘off‘;
options.Display = ‘off‘;

n = length(Y);
H = (Y‘*Y).*kernel(XXkertype);
f = -ones(n1); %f为1*n个-1f相当于Quadprog函数中的c
A = [];
b = [];
Aeq = Y; %相当于Quadprog函数中的A1b

评论

共有 条评论