Интерфейс Matlab Weka, проблемы с AdaBoost: исключение за пределами границ

Я делаю перекрестную проверку, используя интерфейс Matlab Weka, который я получил от обмена файлами. Моя структура цикла, кажется, отлично работает для логистического классификатора Weka. Однако, когда я пытаюсь сделать то же самое для AdaBoostM1, возникает следующая ошибка:

??? 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

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

РЕДАКТИРОВАТЬ: Вот код, который я использую для обучения и тестирования классификатора:

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);

person Nicole    schedule 21.04.2012    source источник


Ответы (1)


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

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

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

person Richante    schedule 21.04.2012
comment
Спасибо за ваш ответ! Однако матрицы ориентированы правильно. Я использовал точно такой же код, но с другим классификатором, в другой программе, и там он работает. Кроме того, просто чтобы быть уверенным, я попытался переставить матрицы, и это привело к поломке, потому что метки не были строкового типа. - person Nicole; 21.04.2012
comment
Можете ли вы показать код, который вы используете для обучения и тестирования вашего классификатора? - person Richante; 21.04.2012
comment
Прошу прощения за медленный ответ - я не получил уведомление о вашем комментарии. Я сделал правку, которую вы просили, в своем посте. Большое спасибо! - person Nicole; 02.05.2012