2013-03-09 139 views
2

我從命令行運行WEKA以創建用於訓練的貝葉斯網絡模型,然後使用此模型在單獨的數據集上進行測試。貝葉斯網絡使用TAN搜索選項和一個簡單的估計器。我的命令行調用培訓看起來是這樣的:在WEKA中使用帶有貝葉斯網絡的FilteredClassifier

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 

現在,我才意識到我需要使用一個FilteredClassifier,因爲我想實例ID添加到我的測試數據。這是我卡住的地方。我運行以下命令:

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 

麻煩拍攝,我刪除了所有花哨的搜索選項和估計,僅僅跑了默認設置貝葉斯網絡分類器。這工作得很好,但顯然不是我所需要的。很明顯,我在正確構建這個命令行語句時遇到了問題。

你能告訴我我做錯了什麼嗎?非常感謝!

最佳, 舊金山

回答

3

的問題是,你的命令行參數是在一個錯誤的順序。由於-- -S BAYES-W之後的第一個--,因此認爲該選項屬於weka.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 
+0

謝謝!我最終因命令行語法而感到沮喪,所以我改用了xml選項。在擺弄這些之後,我意識到我的問題與你所提到的完全相同。 – Francisco 2013-03-11 17:56:53