2

コマンド ラインから WEKA を実行してトレーニング用のベイジアン ネットワーク モデルを作成し、このモデルを使用して別のデータ セットでテストしています。ベイジアン ネットワークは、TAN 検索オプションと単純な推定器を使用します。トレーニングのコマンド ライン呼び出しは次のようになります。

java -cp weka.jar:mysql-connector-java-5.0.8-bin.jar  
weka.classifiers.bayes.BayesNet -d BN_model -p 0 -distribution -t tr2.arff -D 
-Q weka.classifiers.bayes.net.search.local.TAN -- -S BAYES 
-E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 1 > tr_preds

ここで、テスト データにインスタンス ID を追加したいので、FilteredClassifier を使用する必要があることに気付きました。これは私が立ち往生しているところです。私は以下を実行します:

java -cp weka.jar:mysql-connector-java-5.0.8-bin.jar 
weka.classifiers.meta.FilteredClassifier 
-F weka.filters.unsupervised.attribute.Remove -R 1 
-W weka.classifiers.bayes.BayesNet -d BN_model -p 1 -distribution -t tr2.arff -D 
-Q weka.classifiers.bayes.net.search.local.TAN -- -S BAYES 
-E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 1 > tr_preds

次のエラーが表示されます。

Weka exception: Illegal options: -S BAYES

トラブルシューティングを行うために、凝った検索オプションと推定器をすべて削除し、デフォルト設定でベイジアン ネットワーク分類器を実行しました。これはうまくいきましたが、明らかに私が必要としているものではありません。このコマンド ライン ステートメントを適切に作成するのに問題があることは明らかです。

私が間違っていることを教えてください。本当にありがとう!

ベスト、フランシスコ

4

1 に答える 1

3

問題は、コマンドライン引数の順序が間違っていることです。は後-- -S BAYESの最初なので、このオプションはに属していると見なされます。これは不正なオプションです。分類器のオプションを指定するためのアフターを忘れました。---Wweka.classifiers.bayes.BayesNet---W ...

また、次のような一般的なオプション-t tr2.arff -d BN_model -p 1 -distributionは中央のどこかに配置されているため、呼び出しているクラスの後に配置することをお勧めします。

java -cp weka.jar:mysql-connector-java-5.0.8-bin.jar 
weka.classifiers.meta.FilteredClassifier
-t tr2.arff -d BN_model -p 1 -distribution
-F "weka.filters.unsupervised.attribute.Remove -R 1"
-W weka.classifiers.bayes.BayesNet
-- -D -Q weka.classifiers.bayes.net.search.local.TAN
   -- -S BAYES
   -E weka.classifiers.bayes.net.estimate.SimpleEstimator
   -- -A 1
于 2013-03-10T16:15:23.800 に答える