预测和 svmclassify 有什么区别?
What is the difference between predict and svmclassify?
我尝试了以下代码
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
我都试过了;但它 returns 一个错误。这两个函数的基本区别是什么?
[label,score] = predict(SVMModel,test);
label = svmclassify(SVMModel, test);
首先,documentation page on svmclassify
上面有一个很大的注释:
svmclassify
will be removed in a future release. See fitcsvm
, ClassificationSVM
, and CompactClassificationSVM
instead.
MATLAB 在函数命名方面有点模糊,因为有大量函数使用不同的方案和算法命名为 predict
。我怀疑您会想要使用 the one for SVMs。这 应该 return 与 svmclassify
相同的结果,但我认为在确定 predict
MATLAB 决定使用哪个时出现问题,或者predict
的算法比不受支持的 svmclassify
更新,因此可能会产生不同的输出。
结论是您应该使用最新的函数,以便能够 运行 您的代码在未来的版本中获得最新的算法。 MATLAB 将根据您输入的输入结构选择正确的 predict
版本。
我尝试了以下代码
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
我都试过了;但它 returns 一个错误。这两个函数的基本区别是什么?
[label,score] = predict(SVMModel,test);
label = svmclassify(SVMModel, test);
首先,documentation page on svmclassify
上面有一个很大的注释:
svmclassify
will be removed in a future release. Seefitcsvm
,ClassificationSVM
, andCompactClassificationSVM
instead.
MATLAB 在函数命名方面有点模糊,因为有大量函数使用不同的方案和算法命名为 predict
。我怀疑您会想要使用 the one for SVMs。这 应该 return 与 svmclassify
相同的结果,但我认为在确定 predict
MATLAB 决定使用哪个时出现问题,或者predict
的算法比不受支持的 svmclassify
更新,因此可能会产生不同的输出。
结论是您应该使用最新的函数,以便能够 运行 您的代码在未来的版本中获得最新的算法。 MATLAB 将根据您输入的输入结构选择正确的 predict
版本。