predict和svmclassify有什么区别?

时间:2017-06-05 11:31:35

标签: matlab classification svm

我尝试了以下代码

data =  [27    9   0
    11.6723281  28.93422177 0
    25  9   0
    23  8   0
    5.896096039 23.97745722 1
    21  6   0
    21.16823369 5.292058423 0
    4.242640687 13.43502884 1
    22  6   0];
    Attributes = data(:,1:2);
    Classes = data(:,3);
    train = [1 3 4 5 6 7];
    test = [2 8 9];
    %%# Train
   SVMModel = fitcsvm(Classes(train),Attributes(train,:))
   classOrder = SVMModel.ClassNames
   sv = SVMModel.SupportVectors;
   figure
   gscatter(train(:,1),train(:,2),Classes)
   hold on
   plot(train(:,1),train(:,2),'ko','MarkerSize',10)
   legend('good','bad','Support Vector')
   hold off

我尝试了predictsvmclassify;但它返回一个错误。这两个函数之间的基本区别是什么?

 [label,score] = predict(SVMModel,test);
 label           = svmclassify(SVMModel, test);

1 个答案:

答案 0 :(得分:2)

首先,在documentation page on svmclassify

之上有一个很大的音符
  

svmclassify将在以后的版本中删除。请改为fitcsvmClassificationSVMCompactClassificationSVM

MATLAB在函数命名方面有点模糊,因为有许多名为predict的函数,使用不同的方案和算法。我怀疑你会想要使用the one for SVMs。这个返回与svmclassify相同的结果,但我认为在确定哪个predict MATLAB决定使用或predict具有比不受支持的svmclassify更新的算法,因此可能会产生不同的输出。

结论是您应该使用最新的函数来在将来的版本中运行代码并获得最新的算法。 MATLAB将根据您提供的输入结构选择正确的predict版本。