MATLAB通过二次规划问题解决svm二分类问题

用MATLAB解决最优间隔分布式分类算法分类问题
我需要使用MATLAB通过计算最优间隔分布式分类算法的二次规划模型来得到某一个数据集这一算法的分类情况

可以通过MATLAB的quadprog函数解决SVM二分类问题。下面是一个例子,其中我们先生成一个包含两个类别的随机数据集,然后用线性规化(linear programming)问题来解决问题,最终用SVM算法分类。请参考以下代码:

% 生成随机数据
shift = 3;
n = 200;
m=200;
d = 2;
sigma = 1;
x = randn(d,n)-shift;
y = randn(d,m)*sigma+shift;

% 线性规化解决线性可分问题
% 构造问题 P2
for i=1:n
    A(i,:) = [-x(:,i)',-1];
end
for i=1:m
    A(i+n,:) = [y(:,i)',1];
end
c = ones(n+m,1)*(-1);
w = linprog(zeros(d+1,1),A,c);

% SVM算法分类
H = eye(d+1);
H(d+1,d+1) = 0;
w = quadprog(H,zeros(d+1,1),A,c);

% 结果可视化
x1 = -shift-2:0.1:shift+2*sigma;
y1 = (-w(3)-w(1)*x1)/w(2);
plot(x1,y1,'g-','LineWidth',2);
y1 = (-1-w(3)-w(1)*x1)/w(2);
plot(x1,y1,'g-','LineWidth',2);
y1 = (1-w(3)-w(1)*x1)/w(2);
plot(x1,y1,'g-','LineWidth',2);
legend('Positive samples','Negative samples','Linear programming','Linear SVM');