我有這個用于網格搜索的代碼:
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())
它向我提出了這個錯誤:
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)
同樣在多搜索的情況下,我有這個代碼:
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())
并且還會出現此錯誤:
Exception in thread "Thread-0" java.lang.ClassNotFoundException: weka.core.setupgenerator.AbstractParameter
...
我看到大家都說要解決這個錯誤,你需要安裝包,但我已經安裝了。
檢查:
items = packages.installed_packages()
for item in items:
print(item.name " " item.url)
這給了我:
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
并檢查所有軟體包是否已安裝最新版本及其正確,其中:
success, exit_required = install_missing_packages([("gridSearch", LATEST),("multisearch", LATEST)])
if exit_required:
jvm.stop()
sys.exit(0)
所以我不知道我是否應該通過這個錯誤或者我應該做些什么。
我不得不說,當我執行它時,它給了我一個解決方案,但也引發了這個錯誤,所以不知道該怎么做。
謝謝你們。
uj5u.com熱心網友回復:
您列出的例外不會影響腳本執行,因為它們由 pww3 在內部處理(不幸的是,盡管捕獲了例外,但無法抑制錯誤輸出;這將由底層 javabridge 庫輸出)。
一點背景知識:由于 pww3 可以在有和沒有包支持的情況下運行,它首先嘗試使用 Java 類加載器加載類。如果失敗(這是您看到的錯誤訊息),它將嘗試使用 Weka 的加載類機制來加載它們。
剛剛發布的pww3 0.2.7 版本更智能地處理了這一點,并避免了這些例外的輸出。
最后說明classifier.:使用MultiSearch.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/437716.html
標籤:爪哇 python-3.x 例外 威卡 网格搜索
上一篇:如何在Nim中禁用警告
