Я делаю некоторые перекрестные проверки с использованием интерфейса Matlab Weka, который я получил из обмена файлами. Моя структура цикла, похоже, отлично работает для классификатора Weka's Logistic. Однако, когда я пытаюсь сделать то же самое для AdaBoostM1, он выдает следующее сообщение об ошибке:Matlab Weka Интерфейс AdaBoost Проблемы: из-за ограничений Исключение
??? Java exception occurred: java.lang.ArrayIndexOutOfBoundsException
Error in ==> wekaClassify at 24 classProbs(t+1,:) = (classifier.distributionForInstance(testData.instance(t)))';
Error in ==> classifier_search at 225 [pred ~] = wekaClassify(matlab2weka('instance', featurelabels, tester), classifier);
я определил через некоторое тестирование, что это происходит только тогда, когда количество экземпляров в обучающем наборе больше, чем количество экземпляров в тестовом наборе. Я уверен, что вы можете понять, почему это проблема для меня, поскольку в большинстве ситуаций набор тренировок больше, чем набор тестов.
Есть ли что-то другое в отношении того, как я должен форматировать свои входы при использовании Adaboost, а не Logistic? Любая информация, которую вы можете дать в отношении этой проблемы, будет настолько полезна.
Я скачал этот код с этой страницы: http://www.mathworks.com/matlabcentral/fileexchange/21204-matlab-weka-interface
Письма отскакивают от счета парня, который сделал это, и он, кажется, не отвечать на комментарии на странице - Я надеюсь, что, возможно, кто-то здесь это использовалось.
EDIT: Вот код, который я использую для обучения и тестирования классификаторов:
classifier = trainWekaClassifier(matlab2weka('training', featurelabels, train), 'meta.AdaBoostM1', { strcat('-P 100 -S 1 -I ', num2str(r), '-W weka.classifiers.trees.DecisionStump')});
[pred ~] = wekaClassify(matlab2weka('instance', featurelabels, tester), classifier);
Спасибо за ваш ответ! Однако матрицы правильно ориентированы. Я использовал тот же самый код, но с другим классификатором, в другой программе, и он работает там. Кроме того, чтобы быть уверенным, я попытался преобразовать матрицы и заставил их сломаться, потому что метки не были типа string. – Nicole
можете ли вы показать код, который вы используете для обучения и тестирования вашего классификатора? – Richante
Прошу прощения за мой медленный ответ - я не получил уведомление о вашем комментарии. Я сделал исправление, которое вы запросили в моем сообщении. Спасибо огромное! – Nicole