【问题标题】:What is the difference between predict and svmclassify?predict 和 svmclassify 有什么区别?
【发布时间】:2017-11-06 04:07:29
【问题描述】:

我尝试了以下代码

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

predict 和 svmclassify 我都试过了;但它返回一个错误。这两个函数的基本区别是什么?

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

【问题讨论】:

  • “它返回一个错误” - 然后按照文档的建议使用它,您将看到输出和差异,或者在这里不那么模糊! predict:此预测命令计算已识别模型的 K 步提前输出。 svmclassify:使用支持向量机分类器结构中的信息对数据矩阵 Sample 中的每一行数据进行分类。
  • @Wolfie 不一定适用于 predict。看我的回答;有大量名为 predict 的函数,它们都根据您输入的任何输入系统执行其他操作。
  • 我只是复制第一个文档结果的懒惰,但可能比没有证据表明甚至这样做的 OP 懒惰 略少 ;) 一个很好的详细答案.

标签: matlab classification svm


【解决方案1】:

首先,documentation page on svmclassify 顶部有一个很大的注释:

svmclassify 将在未来的版本中删除。请参阅 fitcsvm、ClassificationSVM 和 CompactClassificationSVM。

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

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

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2017-12-11
    • 2015-11-26
    • 1970-01-01
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    相关资源
    最近更新 更多