You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pyweka的MultiSearch函数可用参数有哪些?运行示例报参数非法如何解决?

报错原因

你传入MultiSearch的-sample-size、-initial-folds、-subsequent-folds、-num-slots不属于MultiSearch类本身的合法参数,这些配置是MultiSearch内部调用的搜索算法的参数,直接放在外层options里就会触发非法参数报错。

MultiSearch合法参数列表

你可以运行print(MultiSearch.to_help())打印完整的参数说明,常用合法参数如下:

  • -S <整数>:随机数种子,你代码里保留的该参数是合法的
  • -E <字符串>:模型选优的评估指标缩写,和multi.evaluation赋值作用一致
  • -folds <整数>:交叉验证的折数
  • -output-debug-info:开启调试日志输出
  • -algorithm <搜索算法类>:指定参数搜索的执行算法,默认使用weka.classifiers.meta.multisearch.DefaultSearch

修复方案

将原本传入外层的算法参数转移给内部的默认搜索算法即可,修复后的代码如下:

from weka.classifiers import MultiSearch, Classifier, DefaultSearch
from weka.core.multisearch import MathParameter, ListParameter

# 初始化MultiSearch,仅传入本身支持的参数
multi = MultiSearch(options=["-S", "1"])
multi.evaluation = "CC"
multi.folds = 2

# 配置内部搜索算法,传入采样、折数、线程相关参数
search_alg = DefaultSearch(options=[
    "-sample-size", "100.0", 
    "-initial-folds", "2", 
    "-subsequent-folds", "2",
    "-num-slots", "1"
])
multi.algorithm = search_alg

# 后续参数配置、分类器定义、训练逻辑不变
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())

扩展说明

如果需要查看内部搜索算法的所有可配置参数,可以运行如下代码获取完整帮助:

print(DefaultSearch.to_help())

内容的提问来源于stack exchange,提问作者Pablo Moreira Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:54:08