0

125レコードのトレーニング済みデータセットがあります。NaiveBayesUpdatableを使用して新しいインスタンスを分類します。しかし、naiveBayesを(Windowsで、weka 3.4を使用して)実行すると、次のエラーが発生します。

java.lang.ArrayIndexOutOfBoundsException: 126
    at weka.estimators.DiscreteEstimator.getProbability(Unknown Source)
    at weka.classifiers.bayes.NaiveBayes.distributionForInstance(Unknown Source)
    at weka.classifiers.Classifier.classifyInstance(Unknown Source)
    at Classifier.NaiveBayes.classifyInstance(NaiveBayes.java:190)
    at Classifier.NaiveBayes.classifyWebPage(NaiveBayes.java:106)

J48分類器を実行すると、問題なく実行されます。

ヘルプ\アイデアをありがとう。

4

2 に答える 2

0

私は解決策を見つけたと思います。レコードをデータセットに追加し、分類子を再度ビルドしました。そうすれば問題なく分類できました。しかし、なぜj48がそのデータセットにレコードを持っている必要がないのかわかりません。

于 2011-08-28T10:26:00.363 に答える
0

classifyInstance()の後にupdateClassifier()を呼び出していますか?NaiveBayesは、更新する場合にのみ更新されます。J48は更新可能な分類子ではないため、当然、インスタンスを追加するたびに再構築する必要があります。J48は非常に高速な学習アルゴリズムであるため、パフォーマンス面ではそれほど大きな違いはありません。

いずれにせよ、UpdateableClassifierを実装する他のクラスを調べて(EclipseでF4を使用して継承階層を取得する)、結果をそれらと比較することをお勧めします。NaiveBayesは非常に特定のタスクに適していますが、IBk(Nearest Neighbor)は多くのドメインにわたって堅牢です。

于 2011-08-29T07:12:48.243 に答える