在Matlab中使用fitcsvm()函数存储ClassificationSVM的数组/矩阵会给我一个错误,我该如何解决它?

时间:2015-04-08 07:51:01

标签: matlab machine-learning svm multilabel-classification matrix-storage

我正在尝试使用Matlab中的SVM库执行多标签分类。有一种解决方案可以使用"较旧的" SVM函数名为svmtrain()here。基于此,我使用fitcsvm()创建了自己的函数。 但是,当我尝试存储受SVM训练的模型时,我收到以下错误:

  

使用classreg.learning.internal / DisallowVectorOps / subsasgn(第28行)时出错

     

使用()索引不能分配给double类的对象。

     

multiClassSVM中的错误>(parfor body)(第16行)

     

SVMModel(i)= SVMModelHolder;

     

multiClassSVM中的错误(第8行)

     

parfor i = 1:9

如何在变量中存储多个ClassificationSVM模型?

如果有帮助,则会给出代码:

parfor i=1:9
    label = (labels==i);
    label = i * label;
    disp(size(label));
    disp(size(trainSet));       
    SVMModelHolder = fitcsvm(trainSet, label);
    disp(class(SVMModelHolder))
    SVMModel(i) = SVMModelHolder;
end;

如果您有任何帮助,我将不胜感激,或者以完全不同的方式解决问题的任何建议,如果这样的话。

1 个答案:

答案 0 :(得分:0)

fitcsvm输出一个无法存储在数值数组中的对象,因此您必须使用单元格数组(即花括号),如下所示:

SVMModel{i} = SVMModelHolder