Matlab: делать прогнозы с SVM для задач мультиклассовой классификации - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь использовать опорную векторную машину для классификации моих данных по 3 классам.Я использовал эту функцию Matlab для обучения и перекрестной проверки SVM:

Mdl = fitcecoc(XTrain, yTrain, 'Learners', 'svm', 'ObservationsIn', 'rows', ...
   'ScoreTransform', 'invlogit','Crossval','on', 'Holdout', 0.2);

, где XTrain содержит все мои данные, а yTrain - это ячейка, содержащая имена каждого класса, который будет назначен входным данным в XTrain,Вышеприведенная функция возвращает мне:

Mdl --> 1x1 ClassificationPartitionedECOC

Мой вопрос: какую функцию я должен использовать, чтобы делать прогнозы, используя новые данные?В случае бинарной классификации я создаю SVM с помощью 'fitcsvm', а затем предсказываю метки с помощью:

[label, score] = predict(Mdl, XTest);

Однако, если я передаю ClassificationPartitionedECOC в функцию 'предсказывать', это дает мне следующееошибка:

No valid system or dataset was specified.

Мне не удалось найти функцию, которая позволяла бы мне выполнять прогнозирование, исходя из имеющегося у меня формата модели ClassificationPartitionedECOC.Спасибо за любую помощь, вы можете предоставить!

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете получить доступ к ученику i через:

Mdl.BinaryLearners{i}

Поскольку fitcecoc просто обучает двоичный классификатор, как вы это делаете с fitCSVM, один против одногомода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...