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

现在,我刚刚意识到我需要使用一个 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

为了排除故障,我删除了所有花哨的搜索选项和估计器,只使用默认设置运行贝叶斯网络分类器。这工作得很好,但这显然不是我需要的。很明显,我在正确构建此命令行语句时遇到问题。

你能告诉我我做错了什么吗?非常感谢!

最好的,弗朗西斯科

4

1 回答 1

3

问题是您的命令行参数的顺序错误。因为-- -S BAYES是 first --after -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
于 2013-03-10T16:15:23.800 回答