SVM分类器中的超平面

时间:2014-10-24 14:14:26

标签: matlab classification svm

我想在SVM分类器中获得超平面公式,

所以我可以根据超平面的距离来计算每个样本的真实分类概率。

为简单起见,想象一下MATLAB自己的例子,

load fisheriris
xdata = meas(51:end,3:4);
group = species(51:end);
svmStruct = svmtrain(xdata,group,'showplot',true);

由此给出,

enter image description here

超平面是一条线,我想要那个公式。

超平面也可能有凌乱的形状!

我该怎么办?也许还有其他方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

基于SVM的分类器包含支持向量

svmStruct 更轻松地阅读 svmtrain "AUTOSCALE" false

svmStruct.SupportVectors

svmStruct = 

          SupportVectors: [3x2 double]
                   Alpha: [3x1 double]
                    Bias: -23.1428
          KernelFunction: @linear_kernel
      KernelFunctionArgs: {}
              GroupNames: [150x1 logical]
    SupportVectorIndices: [3x1 double]
               ScaleData: []
           FigureHandles: {[170.0012] [171.0052 172.0018] [225.0018]}


ans =

    5.5000 3.5000
    4.5000 2.3000
    4.9000 2.5000

>> data( svmStruct.SupportVectorIndices,: )

ans =

    5.5000 3.5000
    4.5000 2.3000
    4.9000 2.5000

如果您使用默认的“ autoscale ”选项,那么您需要使用像这样丑陋的东西来展开缩放:

 (    data( svmStruct.SupportVectorIndices( 1 ),: )
    + svmStruct.ScaleData.shift
  ).* svmStruct.ScaleData.scaleFactor

(>>> https://www.mathworks.com/matlabcentral/newsreader/view_thread/249055


要从SVM分类器内部数据构建分离超平面,您可能对>>>感兴趣http://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html

enter image description here 使用带有线性内核的支持向量机分类器在两类可分离数据集中绘制分离超平面的最大边距的参数