如何使用scikit-learn的GaussianProcessRegressor重现GPy的GPRegression结果?

GPRegressionGPy)和GaussianProcessRegressorscikit-learn)都使用相似的初始值和相同的优化器(lbfgs)。为什么结果会有显著差异?

#!pip -qq install pods#!pip -qq install GPyfrom sklearn.gaussian_process import GaussianProcessRegressorfrom sklearn.gaussian_process.kernels import RBF, ConstantKernel as Cfrom sklearn.preprocessing import StandardScalerimport podsdata = pods.datasets.olympic_marathon_men()X = StandardScaler().fit_transform(data['X'])y = data['Y']# scikit-learnmodel = GaussianProcessRegressor(C()*RBF(), n_restarts_optimizer=20, random_state=0)model.fit(X, y)print(model.kernel_)# GPyfrom GPy.models import GPRegressionfrom GPy.kern import RBF as GPyRBFmodel = GPRegression(X, y, GPyRBF(1))model.optimize_restarts(20, verbose=0)print(model.kern)

结果

2.89**2 * RBF(length_scale=0.173)  rbf.         |               value  |  constraints  |  priors  variance     |  25.399509298957504  |      +ve      |          lengthscale  |   4.279767394389103  |      +ve      |        

回答:

使用GPy的RBF()核相当于使用scikit-learn的ConstantKernel()*RBF() + WhiteKernel()。因为GPy库内部添加了似然噪声。通过这种方法,我能够在两者之间获得可比较的结果。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注