java - 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 有关,但我不确定。有任何想法吗?除了这个问题,我可以使用它们的默认选项很好地训练这些分类器。
谢谢。
解决方案
通过设置器设置所有参数来解决这个问题。当你像这样使用这个问题
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);
推荐阅读
- python - 从 Python 打印 Powerpoint 幻灯片
- json - 在 python 中创建一个没有 Flask 的 REST API
- python - 如何使用 plotly 和 cufflinks 绘制多轴?
- python - SyntaxError print(*args, **kwargs)
- c# - WebService 是 httplistener 还是 TcpListener?
- powershell - PowerShell 将 SMTPAddress 详细信息导出到 .CSV 失败?
- mysql - 如果当前语句失败,如何转到 MySQL 中的下一条语句?
- excel - 根据 5 个其他字段和 2 个规则计算一个字段
- c# - 使用 owin 自托管 web api
- azure - VSTS 将 cer 文件从 azure keyvault 复制到放置文件夹