首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何处理这个错误在网格搜索和多搜索与pyweka?

我应该如何处理这个错误在网格搜索和多搜索与pyweka?
EN

Stack Overflow用户
提问于 2022-02-15 18:29:24
回答 1查看 52关注 0票数 0

我有一个网格搜索代码:

代码语言:javascript
复制
from weka.classifiers import GridSearch

data = loader.load_file(data_dir + "bolts.arff")
data.class_is_last()

grid = GridSearch(options=["-sample-size", "100.0", "-traversal", "ROW-WISE", "-num-slots", "1", "-S", "1"])
grid.evaluation = "CC"
grid.y = {"property": "kernel.gamma", "min": -3.0, "max": 3.0, "step": 1.0, "base": 10.0, "expression": "pow(BASE,I)"}
grid.x = {"property": "C", "min": -3.0, "max": 3.0, "step": 1.0, "base": 10.0, "expression": "pow(BASE,I)"}
cls = Classifier(
    classname="weka.classifiers.functions.SMOreg",
    options=["-K", "weka.classifiers.functions.supportVector.RBFKernel"])
grid.classifier = cls
grid.build_classifier(data)
print("Model:\n" + str(grid))
print("\nBest setup:\n" + grid.best.to_commandline())

这给我带来了这样的错误:

代码语言:javascript
复制
Failed to get class weka.classifiers.meta.GridSearch

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: weka.classifiers.meta.GridSearch

Caused by: java.lang.ClassNotFoundException: weka.classifiers.meta.GridSearch
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)

同样,对于多重搜索,我有以下代码:

代码语言:javascript
复制
from weka.classifiers import MultiSearch


multi = MultiSearch(options=["-S", "1"])           
multi.evaluation = "CC"
mparam = MathParameter()
mparam.prop = "classifier.kernel.gamma"
mparam.minimum = -3.0
mparam.maximum = 3.0
mparam.step = 1.0
mparam.base = 10.0
mparam.expression = "pow(BASE,I)"
lparam = ListParameter()
lparam.prop = "classifier.C"
lparam.values = ["-2.0", "-1.0", "0.0", "1.0", "2.0"]
multi.parameters = [mparam, lparam]
cls = Classifier(
    classname="weka.classifiers.functions.SMOreg",
    options=["-K", "weka.classifiers.functions.supportVector.RBFKernel"])
multi.classifier = cls
multi.build_classifier(data)
print("Model:\n" + str(multi))
print("\nBest setup:\n" + multi.best.to_commandline())

也会出现这样的错误:

代码语言:javascript
复制
Exception in thread "Thread-0" java.lang.ClassNotFoundException: weka.core.setupgenerator.AbstractParameter
...

我看到每个人都说要解决这个错误,你需要安装软件包,但我已经全部安装了。

经检查:

代码语言:javascript
复制
items = packages.installed_packages()
for item in items:
    print(item.name + " " + item.url)

这给了我:

代码语言:javascript
复制
gridSearch http://prdownloads.sourceforge.net/weka/gridSearch1.0.12.zip?download
timeseriesForecasting http://prdownloads.sourceforge.net/weka/timeseriesForecasting1.1.27.zip?download
LibSVM http://prdownloads.sourceforge.net/weka/LibSVM1.0.10.zip?download
multisearch https://github.com/fracpete/multisearch-weka-package/releases/download/v2020.2.17/multisearch-2020.2.17.zip

并检查所有软件包是否安装了最新版本及其正确版本,并:

代码语言:javascript
复制
success, exit_required = install_missing_packages([("gridSearch", LATEST),("multisearch", LATEST)])
if exit_required:
    jvm.stop()
    sys.exit(0)

所以我不知道我是否应该通过这个错误,或者我应该做些什么。

我不得不说,当我执行它时,它给了我一个解决方案,但也引起了这个错误,所以我不知道该怎么做。

谢谢你们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-21 22:40:58

您列出的异常不会影响脚本的执行,因为它们是由pww3在内部处理的(遗憾的是,错误输出无法被抑制,尽管捕获了异常;这将由底层的javabridge获得输出)。

--背景:,因为pww3可以在没有包支持的情况下运行,所以它首先尝试使用Java加载类。如果失败(这是您看到的错误消息),它将尝试使用Weka的加载类机制加载它们。

刚刚发布的版本0.2.7 of pww3更智能一些,避免了这些异常的输出。

最后注意事项:--在使用MultiSearch时,需要在属性名中删除classifier.前缀。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71131619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档