Java Weka-Can';我找不到一个允许的类别

Java Weka-Can';我找不到一个允许的类别,java,weka,Java,Weka,我正在将Weka集成到为另一个应用程序编写的插件中。我在我的类路径中包括了weka.jar,在大多数情况下,事情似乎运行得很好。不幸的是,当我开始改变一些分类器的选项时,我遇到了一些问题,特别是找不到某些类。例如,当我尝试在AdaBoost选项中更改分类器的名称时,我得到一个错误,结果如下: java.lang.Exception: Can't find a permissible class called: weka.classifiers.bayes.BayesNet Model optio

我正在将Weka集成到为另一个应用程序编写的插件中。我在我的类路径中包括了weka.jar,在大多数情况下,事情似乎运行得很好。不幸的是,当我开始改变一些分类器的选项时,我遇到了一些问题,特别是找不到某些类。例如,当我尝试在AdaBoost选项中更改分类器的名称时,我得到一个错误,结果如下:

java.lang.Exception: Can't find a permissible class called: weka.classifiers.bayes.BayesNet
Model options set to: -P 50 -S 1 -I 10 -W weka.classifiers.bayes.BayesNet
    at weka.core.ResourceUtils.forName(ResourceUtils.java:84)
    at weka.core.Utils.forName(Utils.java:1080)
    at weka.classifiers.AbstractClassifier.forName(AbstractClassifier.java:91)
    at weka.classifiers.SingleClassifierEnhancer.setOptions(SingleClassifierEnhancer.java:108)
    at weka.classifiers.IteratedSingleClassifierEnhancer.setOptions(IteratedSingleClassifierEnhancer.java:115)
    at weka.classifiers.RandomizableIteratedSingleClassifierEnhancer.setOptions(RandomizableIteratedSingleClassifierEnhancer.java:93)
    at weka.classifiers.meta.AdaBoostM1.setOptions(AdaBoostM1.java:375)
我想这可能与我在OSGi包中使用JAR有关,但我不确定。有什么想法吗?除此之外,我还可以使用默认选项对这些分类器进行良好的训练


谢谢。

通过设置器设置所有参数来解决此问题。 这个问题当你这样使用的时候

        BayesNet processes = new BayesNet();
        String options = "-D -Q weka.classifiers.bayes.net.search.local.K2 -- -P 1 -S BAYES -E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 0.5";
        processes.setOptions(weka.core.Utils.splitOptions(options));
像这样更改设置所有参数。(这里不是所有选项,小示例)


RandomForest的-M选项是否有直接setter(即每个叶的最小实例数)?我认为除了通过setOptions()间接执行此操作外,没有其他方法,因此,您可以通过分类器执行此操作
RandomForest ProcessTest=new RandomForest();processesTest.setOptions(weka.core.Utils.splitOptions(options));RandomTree rt=(RandomTree)ProcessTest.getClassifier();刚毛沙鼠(0.2)//值处理测试集分类器(rt)
        BayesNet processes = new BayesNet();
        SimpleEstimator newBayesNetEstimator = new SimpleEstimator();
        newBayesNetEstimator.setAlpha(0.5);
        processes.setEstimator(newBayesNetEstimator);