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

如何在scikit-optimize中为Real维度设置离散步长?

skopt中Real搜索空间设置固定步长的实现方法

skopt的space.Real类本身不支持step参数,要实现按0.25这类固定步长的离散搜索,有两种实用方案:

方案一:通过Integer空间转换

将原Real范围转换为Integer空间,在目标函数中再缩放回实际需要的步长数值。以1到10、步长0.25为例,总共有(10-1)/0.25 + 1 = 37个离散点,对应Integer空间的0到36:

from skopt import space

search_space = [
    space.Integer(0, 36, name="my_scale_int")
]

# 在目标函数中完成数值转换
def objective(params):
    my_scale = 1 + params[0] * 0.25
    # 这里写你的计算逻辑
    return ...

这种方式代码简洁,尤其适合数值范围较大的场景,无需预先生成所有离散值。

方案二:使用Categorical枚举所有离散值

直接生成所有符合步长要求的数值,用space.Categorical定义搜索空间:

from skopt import space
import numpy as np

# 生成1到10之间步长为0.25的所有数值
scale_values = np.arange(1, 10.01, 0.25).tolist()

search_space = [
    space.Categorical(scale_values, name="my_scale")
]

这种方式更直观,能直接看到所有可搜索的候选值,适合数值范围较小的场景,也能完美匹配你缓存离散结果的需求。

内容的提问来源于stack exchange,提问作者Mikko Ohtamaa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:14:57