python - 在 Scikit-learn 的 GaussianProcessRegressor 中使用带有 RBF 内核的 scipy 优化算法时出现 TypeError
问题描述
我正在尝试使用trust_region_optimizer
from scipy优化超参数。在我的情况下,内部需要最大化对数边际似然优化器。Scipy最小二乘最小化目标函数,所以我需要最小化目标函数的逆。以下是我的代码:
import numpy as np
from scipy.optimize import minimize,least_squares
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C
from scipy.optimize import least_squares,rosen
def trust_region_optimizer(obj_func, initial_theta, bounds):
trust_region_method = least_squares(1/obj_func,initial_theta,bounds,method='trf')
return (trust_region_method.x,trust_region_method.fun)
X=np.random.random((10,4))
y=np.random.random((10,1))
kernel = C(1.0, (1e-5, 1e5)) * RBF(10.0)
gp = GaussianProcessRegressor(kernel=kernel, optimizer = trust_region_optimizer(rosen,[10,20,30,40], [0,100]), alpha =1.2, n_restarts_optimizer=10)
gp.fit(X, y)
运行上述代码时,我在控制台上收到以下错误:
TypeError: unsupported operand type(s) for /: 'int' and 'function'
但是,如果我删除kernel
,则根本没有错误。
我试图用 替换1/obj_func
,obj_func
我收到以下错误:
ValueError:jac` must be '2-point', '3-point', 'cs' or callable`
1/obj_func
但是,在我的工作中,我无法替代obj_func
。
任何帮助将不胜感激。谢谢你。
解决方案
推荐阅读
- pandas - 将多维气候 numpy 数组转换为 Pandas 数据框
- ios - 如何生成符合正态分布模式的随机数?
- validation - 复杂的 SharePoint 日历验证问题
- javascript - React Native(使用 Expo)Firebase 身份验证
- apache-nifi - 在流期间执行一次 NIFI InvokeHTTP 处理器,而不是基于每个入站流文件
- c# - 为什么 trackbar 只能作为 ON 和 OFF 模式工作?
- java - Android,opencv - 尝试初始化 Mat 时未找到 long org.opencv.core.Mat.n_Mat() 的实现
- python - 如何从图像(png或jpg)获取文件名并将其更改为时间时间戳?
- entity-framework-core - Azure Function PostBuild 文件副本丢失
- ansible - Ansible - 从 dict 条目中读取子键并连接到字符串