0

ファイル交換から取得したMatlab Weka Interfaceを使用して、相互検証を行っています。私のループ構造は、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);

いくつかのテストを通じて、これはトレーニング セット内のインスタンスの数がテスト セット内のインスタンスの数よりも多い場合にのみ発生することがわかりました。ほとんどの場合、トレーニング セットのサイズはテスト セットのサイズよりも大きいため、これが私にとって問題である理由がわかると思います。

Logistic ではなく Adaboost を使用する場合、入力のフォーマット方法に違いはありますか? この問題に関してあなたが提供できる情報はとても役に立ちます。

このコードをこのページからダウンロードしました: 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);
4

1 に答える 1

0

私はこのソフトウェアの組み合わせを使用したことがないので、何が原因なのか推測することしかできません。

トレーニング/テスト データ マトリックスは正しい方向に進んでいますか? それらは N 行 D 列 (N インスタンス、D 機能) である必要があります。

D 行 N 列のトレーニング マトリックスと D 行 M 列のテスト マトリックスを渡していた場合、M < N の場合にのみ機能することが期待されます。意味のある結果を出します。

于 2012-04-21T14:52:08.140 に答える