Я пытаюсь выполнить классификацию с несколькими метками, используя библиотеки 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;
Я был бы признателен за любую помощь в этом, или какие-либо предложения, чтобы сделать эту проблему в совершенно по-другому, если это путь.
я подозреваю, что вам нужно использовать массив ячеек для это. Попробуйте 'SVMModel {i} = SVMModelHolder', т. Е. Использовать фигурные скобки вместо обычных круглых скобок. – Dan
Спасибо, это сработало! Но я не понимаю, зачем мне использовать массив ячеек здесь. Откуда я знаю разницу, и есть ли какая-то конкретная документация, которую я могу прочитать об этом? Еще раз спасибо @Dan –
в документации для функции, в которой он сообщает вам, что он выводит. Старая функция выводит кучу разных числовых массивов, а новые выдает объект. Вы не можете хранить такие объекты в числовом массиве, поэтому вам нужно использовать массив ячеек – Dan