首页 > 解决方案 > Weka - 找不到允许的类

问题描述

我正在将 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 有关,但我不确定。有任何想法吗?除了这个问题,我可以使用它们的默认选项很好地训练这些分类器。

谢谢。

标签: javaweka

解决方案


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

        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));

像这样更改设置所有参数。(这里不是所有选项,小例子)

        BayesNet processes = new BayesNet();
        SimpleEstimator newBayesNetEstimator = new SimpleEstimator();
        newBayesNetEstimator.setAlpha(0.5);
        processes.setEstimator(newBayesNetEstimator);

推荐阅读