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

Storing an array/matrix of ClassificationSVM with fitcsvm() function in Matlab gives me an error, how can I resolve it?

我正在尝试使用 Matlab 中的 SVM 库执行多标签分类。使用名为 svmtrain() here 的 "older" SVM 函数可以解决此问题。基于此,我使用 fitcsvm() 创建了自己的函数。 但是,当我尝试存储 SVM 训练模型时,出现以下错误:

Error using classreg.learning.internal/DisallowVectorOps/subsasgn (line 28)

You cannot assign to an object of class double using () indexing.

Error in multiClassSVM>(parfor body) (line 16)

SVMModel(i) = SVMModelHolder;

Error in multiClassSVM (line 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;

我将不胜感激任何帮助,或者任何以完全不同的方式解决问题的建议,如果这是要走的路。

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

SVMModel{i} = SVMModelHolder