【问题标题】:Sklearn: Using pretrained hyperparameters Gaussian Process RegressionSklearn:使用预训练的超参数高斯过程回归
【发布时间】:2018-09-23 20:55:16
【问题描述】:

在我的数据上拟合 GPR 需要几个小时,因此,我想重用我预训练的 GausianProcessRegressor

我想我找到了解决方法,它似乎产生了相同的结果,但我想知道是否有更好的解决方案,因为这是一种 hack。

kernel = ConstantKernel(0.25, (1e-3, 1e3)) * RBF(hyper_params_rbf, (1e-3, 1e4)) + WhiteKernel(0.0002, (1e-23, 1e3))
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=30)

#normalize the data

train = False

if train:
    print('Fitting')
    gp.fit(X, y)
else:
    gp.kernel_= kernel
    gp.X_train_ = X
    gp.y_train_ = y
    gp._y_train_mean = np.zeros(1) #unuse, as Y is not normalized in Regressor
    # Precompute quantities required for predictions which are independent of actual query points
    K = gp.kernel_(gp.X_train_)
    K[np.diag_indices_from(K)] += gp.alpha
    gp.L_ = cholesky(K, lower=True)
    gp.alpha_ = cho_solve((gp.L_, True), gp.y_train_)  

y_pred, sigma = gp.predict(x,  return_std=True)

【问题讨论】:

  • 为什么不序列化你的GausianProcessRegressor,然后在你想用的时候加载呢?

标签: python scikit-learn regression gaussian


【解决方案1】:

您应该使用picklejoblib 库来序列化您的GaussianProcessRegressor 模型。

from sklearn.externals import joblib

if train:
    print('Fitting')
    gp.fit(X, y)
    joblib.dump(gp, 'filename.pkl') 
else:
    gp = joblib.load('filename.pkl') 

查看来自 scikit-learn 的帮助 here

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 2018-08-05
    • 2015-02-13
    • 1970-01-01
    • 2020-06-04
    • 2020-10-25
    • 1970-01-01
    • 2022-12-15
    • 2018-09-28
    相关资源
    最近更新 更多