Matlab:使用SVM对多类分类问题进行预测

时间:2018-09-21 10:50:45

标签: matlab svm multiclass-classification

我正在尝试使用支持向量机将我的数据分为3类。我使用此Matlab函数来训练和交叉验证SVM:

Mdl = fitcecoc(XTrain, yTrain, 'Learners', 'svm', 'ObservationsIn', 'rows', ...
   'ScoreTransform', 'invlogit','Crossval','on', 'Holdout', 0.2);

其中XTrain包含我的所有数据,而yTrain是一个单元格,其中包含要分配给XTrain中的输入数据的每个类的名称。 上面的函数返回给我:

Mdl --> 1x1 ClassificationPartitionedECOC

我的问题是,我必须使用什么功能才能使用新数据进行预测?在二进制分类的情况下,我使用“ fitcsvm”构建SVM,然后使用以下代码预测标签:

[label, score] = predict(Mdl, XTest);

但是,如果我将ClassificationPartitionedECOC输入到“预测”函数,则会出现此错误:

No valid system or dataset was specified.

我一直无法找到一个函数,该函数可以让我从已有的模型格式(ClassificationPartitionedECOC)开始执行预测。 感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式访问学习者i

Mdl.BinaryLearners{i}

因为fitcecoc就像对fitCSVM一样以一对一的方式训练二进制分类器。