2012-04-21 12 views
0

私はファイル交換から得たMatlab Wekaインターフェイスを使用していくつかのクロス検証を行っています。私のループ構造はWekaのロジスティック分類器でうまくいくようです。私はトレーニングセット内のインスタンスの数がより大きい場合、これはのみ発生することをいくつかのテストを介して決定している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); 

:私はAdaBoostM1の正確な同じことをしようとすると、しかし、それは次のようなエラーがスローされますテストセット内のインスタンスの数ほとんどの場合、トレーニングセットがテストセットよりも大きいので、なぜそれが私にとって問題であるかがわかります。

ロジスティックではなく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); 

答えて

0

私はソフトウェアの組み合わせを使用していないので、私はこれだけを引き起こすことができるもので推測を取ることができます。

トレーニング/テストデータマトリックスは正しい方法で使用していますか?それらはN-by-D(N個のインスタンス、D個の機能)でなければなりません。

D-by-NトレーニングマトリクスとD-by-Mテストマトリクスを渡していた場合は、M < N(これはあなたの説明です)意味のある結果は得られません。

+0

ありがとうございました!しかし、行列の向きは正しくあります。私はまったく同じコードを使用しましたが、別のプログラムでは別の分類子を使用していました。さらに、確かに、私はマトリックスを転置してみました。それは、ラベルがタイプストリングではなかったために壊れてしまいました。 – Nicole

+0

クラシファイアのトレーニングとテストに使用するコードを表示できますか? – Richante

+0

私は遅い応答のために謝罪します - 私はあなたのコメントの通知を受け取りませんでした。私は私の投稿であなたが要求した編集をしました。どうもありがとうございます! – Nicole