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

调用gp_minimize函数遇TypeError:predict()获意外参数'return_mean_grad'

问题解决:gp_minimize调用时出现TypeError: predict() got an unexpected keyword argument 'return_mean_grad'

问题描述

调用gp_minimize时触发错误:

TypeError: predict() got an unexpected keyword argument 'return_mean_grad'

当前使用的库版本:

  • scikit-optimize 0.9.0
  • scikit-learn 1.2.0

示例代码:

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import Matern
from skopt import gp_minimize

# 定义高斯过程核函数
kernel = Matern(nu=2.5)

# 初始化高斯过程回归器
gpr = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)

# 定义目标函数
def f(x):
    x1, x2, x3 = x
    return -x1**2 - x2**2 - x3**2

# 定义变量范围
bounds = [(0, 1), (0, 1), (0, 1)]

# 执行优化
res = gp_minimize(f, bounds, n_calls=20, random_state=0, verbose=True, n_random_starts=10, acq_func="EI", base_estimator=gpr)

# 打印最优结果
print("x1 = {:.4f}, x2 = {:.4f}, x3 = {:.4f}, f(x) = {:.4f}".format(res.x[0], res.x[1], res.x[2], res.fun))

问题原因

scikit-learn 1.2.0 对GaussianProcessRegressor的predict方法进行了更新,移除了return_mean_grad参数;但scikit-optimize 0.9.0的代码逻辑中仍在调用该参数,导致版本兼容冲突。

解决方法

方法1:降级scikit-learn版本

将scikit-learn降级到1.1.x系列(如1.1.3),该版本的predict方法仍保留return_mean_grad参数,可与scikit-optimize 0.9.0兼容:

pip install scikit-learn==1.1.3

方法2:升级scikit-optimize到兼容版本

scikit-optimize 0.10.0及以上版本已修复该兼容问题,直接升级到最新稳定版即可:

pip install --upgrade scikit-optimize

方法3:不自定义base_estimator

若无需自定义高斯过程回归器,可直接使用gp_minimize内置的默认估计器,它会自动适配当前scikit-learn版本。修改代码时移除base_estimator=gpr参数:

res = gp_minimize(f, bounds, n_calls=20, random_state=0, verbose=True, n_random_starts=10, acq_func="EI")

内容的提问来源于stack exchange,提问作者Evan Camilleri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:05:14