1

我正在尝试使用 Matlab 中的 SVM 库执行多标签分类。有一个解决方案可以使用这里称为 svmtrain() 的“旧”SVM 函数。基于此,我使用 fitcsvm() 创建了自己的函数。但是,当我尝试存储经过 SVM 训练的模型时,出现以下错误:

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

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

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

SVMModel(i) = SVMModelHolder;

multiClassSVM 中的错误(第 8 行)

平均 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;

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

4

1 回答 1

1

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

SVMModel{i} = SVMModelHolder
于 2015-04-09T11:16:08.627 回答