1

Я пытаюсь выполнить классификацию с несколькими метками, используя библиотеки SVM в Matlab. Для этого было одно решение, использующее «более старшую» функцию SVM, называемую svmtrain() here. Исходя из этого, я создал свою собственную функцию, используя fitcsvm(). Однако, когда я пытаюсь сохранить SVM обучен модель, я получаю следующее сообщение об ошибке:Сохранение массива/матрицы ClassificationSVM с помощью функции fitcsvm() в Matlab дает мне ошибку, как я могу ее разрешить?

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; 

Я был бы признателен за любую помощь в этом, или какие-либо предложения, чтобы сделать эту проблему в совершенно по-другому, если это путь.

+0

я подозреваю, что вам нужно использовать массив ячеек для это. Попробуйте 'SVMModel {i} = SVMModelHolder', т. Е. Использовать фигурные скобки вместо обычных круглых скобок. – Dan

+0

Спасибо, это сработало! Но я не понимаю, зачем мне использовать массив ячеек здесь. Откуда я знаю разницу, и есть ли какая-то конкретная документация, которую я могу прочитать об этом? Еще раз спасибо @Dan –

+0

в документации для функции, в которой он сообщает вам, что он выводит. Старая функция выводит кучу разных числовых массивов, а новые выдает объект. Вы не можете хранить такие объекты в числовом массиве, поэтому вам нужно использовать массив ячеек – Dan

ответ

0

fitcsvm выводит объект, который не может быть сохранен в числовом массиве, и, таким образом, вы должны использовать массив ячеек (т.е. фигурные скобки) следующим образом:

SVMModel{i} = SVMModelHolder 

 Смежные вопросы

  • Нет связанных вопросов^_^