2012-04-21 2 views
0

Я делаю некоторые перекрестные проверки с использованием интерфейса 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); 

ответ

0

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

Являются ли ваши данные для обучения/тестирования правильными способами? Они должны быть N-by-D (N экземпляров, D-функции).

Если вы проходили матрицу обучения D-by-N и матрицу тестирования D-by-M, я бы ожидал, что она будет работать только тогда, когда M < N - это то, что вы описали, - и даже тогда, это не даст значимого результата.

+0

Спасибо за ваш ответ! Однако матрицы правильно ориентированы. Я использовал тот же самый код, но с другим классификатором, в другой программе, и он работает там. Кроме того, чтобы быть уверенным, я попытался преобразовать матрицы и заставил их сломаться, потому что метки не были типа string. – Nicole

+0

можете ли вы показать код, который вы используете для обучения и тестирования вашего классификатора? – Richante

+0

Прошу прощения за мой медленный ответ - я не получил уведомление о вашем комментарии. Я сделал исправление, которое вы запросили в моем сообщении. Спасибо огромное! – Nicole

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

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