在WEKA中使用带有贝叶斯网络的FilteredClassifier

时间:2013-03-09 04:50:40

标签: weka

我从命令行运行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

为了解决问题,我删除了所有花哨的搜索选项和估算工具,并使用默认设置运行贝叶斯网络分类器。这很好,但显然不是我需要的。很明显,我在正确构造这个命令行语句时遇到了问题。

你可以告诉我我做错了吗?非常感谢!

最佳, 旧金山

1 个答案:

答案 0 :(得分: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