0

我正在尝试使用来自 sklearn 的高斯过程回归器来预测一些数据。我正在使用一个数据集,该数据集具有我正在尝试考虑的测量误差。我想通过最大化以下卡方可能性来做到这一点:

卡方似然

其中包含数据 Y^ 的数据协方差矩阵 Sigma。Y 是观测值的 GP 重建。

这是我使用的一些代码:

print(__doc__)

import numpy as np
import pandas as pd
import sklearn

from matplotlib import pyplot as plt

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C, RationalQuadratic as RQ, ExpSineSquared as Exp, Matern, WhiteKernel

CCdata = pd.read_csv("CCdata.csv", sep=';', decimal=',', header=None)
CCdata_array = np.asarray(CCdata)
z_CC = CCdata_array[0:30, 0]
H_z_CC = CCdata_array[0:30, 1].ravel()
H_z_CC_error = CCdata_array[0:30, 2]
CC_z_train = np.atleast_2d(z_CC).T
z_test = np.atleast_2d(np.linspace(0, 4, 10000)).T
kernel = 1.0 * RQ(length_scale=0.00001) + C(1.0, (1e-1, 1e1)) * WhiteKernel(noise_level= 0.005)
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=20, alpha= 0.05, normalize_y=True)
gp.fit(CC_z_train, H_z_CC)
H_z_CC_pred, sigma_test = gp.predict(z_test, return_std=True)
H_z_CC_pred_test = gp.predict(np.atleast_2d(z_BAO).T, return_std=False)

plt.figure()
plt.errorbar(CC_z_train, H_z_CC, yerr=H_z_CC_error, fmt='k.',markersize=10, label='CC datapoints', capsize=2.5, ecolor='k', zorder=2)
plt.plot(z_test, H_z_CC_pred, 'r-', label='GP Fit of H(z)', zorder=3)
plt.fill(np.concatenate([z_test, z_test[::-1]]),
         np.concatenate([H_z_CC_pred - 1.9600 * sigma_test,
                        (H_z_CC_pred + 1.9600 * sigma_test)[::-1]]),
         alpha=.4, fc='b', ec='None', label='95% confidence interval', zorder=1)
plt.xlabel('$z$')
plt.ylabel('[$H(z)^{CC}]$')
plt.ylim(50, 250)
plt.legend(loc='upper left')

我在这里上传到 PasteBin 的数据集。

对于非常具体的数据标签,我深表歉意。如果您对此有任何疑问,我很乐意详细说明。简而言之,z_CC 是我的 x 数据,而 H_z_CC 是我的 y 数据。

我想我也许可以使用

def optimizer(obj_func, initial_theta, bounds)

功能。但我不确定如何将我的似然方程实现到优化器中。此外,优化器最小化可能性,而我想最大化它。

也许有更好的方法可以做到这一点,或者使用不同的高斯过程包,然后请告诉我!

非常感谢提前!!!

4

0 回答 0