在Scikit-learn的GaussianProcessRegressor中使用带有RBF内核的scipy优化算法时的TypeError

时间:2018-05-17 02:57:16

标签: python python-3.x scipy scikit-learn hyperparameters

我正在尝试使用scipy中的<form action="welcome_get.php" method="get"> 来优化超参数。在我的情况下,内部需要最大化log-marginal-likelihood optimizer。 Scipy最小二乘法最小化目标函数,因此我需要最小化目标函数的逆。以下是我的代码:

trust_region_optimizer

运行上面的代码时,我在控制台上收到以下错误:

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

任何帮助将不胜感激。谢谢。

0 个答案:

没有答案