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.