Valentin Kuznetsov
2014-Jun-19 01:02 UTC
[R] RWeka: how to pass arguments to BayesNet for specific search method
Hi, I'm trying to solve simple problem. How to pass arguments to specific search method in RWeka package using BayesNet classifier. Here is code example: BNet <- make_Weka_classifier("weka/classifiers/bayes/BayesNet") K2="weka.classifiers.bayes.net.search.local.K2" wcontrol <- Weka_control(D=TRUE,Q=list(K2,P=2)) model <- BNet(target~., data=train.df, control=wcontrol) if I run this code it will complain Error in .jcall(classifier, "V", "buildClassifier", instances) : java.lang.Exception: Can't find class called: weka.classifiers.bayes.net.search.local.K2 -P 2 Calls: BNet ... RWeka_build_classifier -> .jcall -> .jcheck -> .Call I know that arguments can be passed via Weka_control, and it works if I just use search method, e.g. wcontrol <- Weka_control(D=T,Q=K2) and here D=T option works too. What it should do is to pass additional -- after K2 class. According to http://www.cs.waikato.ac.nz/~remco/weka.bn.pdf and using java command it should looks like this: java weka.classifiers.bayes.BayesNet -t iris.arff -D -Q weka.classifiers.bayes.net.search.local.K2 -- -P 2 I tried to append double dash to K2 definition, e.g. K2="weka.classifiers.bayes.net.search.local.K2 --" but still out of luck. Any suggestions? Thanks, Valentin.
p_connolly
2014-Jun-19 04:28 UTC
[R] RWeka: how to pass arguments to BayesNet for specific search method
My suggestion is not entirely satisfactory, but it's got me out of a few jams. When I can't get the RWeka syntax to work, I resort to using direct weka code in a system call. One such example looks like this and will make sense if you know how Weka does things. system("java weka.classifiers.bayes.NaiveBayes -t HWlrTrain.arff -T HWlrTest.arff -o -threshold-file Threshold.arff") thresholdNB.df <- read.arff("Threshold.arff") I know it kind of defeats the purpose somewhat. But it is making use of RWeka's ability to make arff files which is quite useful in itself. HTH Patrick On 2014-06-19 13:02, Valentin Kuznetsov wrote:> Hi, > > I'm trying to solve simple problem. How to pass arguments to specific > search > method in RWeka package using BayesNet classifier. Here is code > example: > > BNet <- make_Weka_classifier("weka/classifiers/bayes/BayesNet") > K2="weka.classifiers.bayes.net.search.local.K2" > wcontrol <- Weka_control(D=TRUE,Q=list(K2,P=2)) > model <- BNet(target~., data=train.df, control=wcontrol) > > if I run this code it will complain > > Error in .jcall(classifier, "V", "buildClassifier", instances) : > java.lang.Exception: Can't find class called: > weka.classifiers.bayes.net.search.local.K2 -P 2 > Calls: BNet ... RWeka_build_classifier -> .jcall -> .jcheck -> .Call > > I know that arguments can be passed via Weka_control, and it works if I > just > use search method, e.g. > > wcontrol <- Weka_control(D=T,Q=K2) > > and here D=T option works too. > > What it should do is to pass additional -- after K2 class. > According to http://www.cs.waikato.ac.nz/~remco/weka.bn.pdf and > using java command it should looks like this: > > java weka.classifiers.bayes.BayesNet -t iris.arff -D -Q > weka.classifiers.bayes.net.search.local.K2 -- -P 2 > > I tried to append double dash to K2 definition, e.g. > > K2="weka.classifiers.bayes.net.search.local.K2 --" > > but still out of luck. > > Any suggestions? > > Thanks, > Valentin. > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.