【python】sklearnのGaussianProcessRegressorを使って線形回帰分析の信頼区間を計算する【chatGPTメモ】

ガウス過程回帰(GPR)を使いたくなったので、とりあえず一番簡単なデータのデータで回帰分析と信頼区間を出す方法を聞いてみた。

ここからもうちょっと勉強します。

カーネルはDotProduct()とWhiteKernel()を使うといいらしい。

 

import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel
import matplotlib.pyplot as plt

#データ
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 6, 6, 9, 6])

#カーネル
kernel = DotProduct() + WhiteKernel()

#ガウス過程回帰
gpr = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)
gpr.fit(x, y)

#予測
x_pred = np.linspace(0, 6, 100).reshape(-1, 1)
y_pred, sigma = gpr.predict(x_pred, return_std=True)

#トレーニングデータのプロット
plt.scatter(x, y, color='black', label='Training data')

#予測結果のプロット
plt.plot(x_pred, y_pred, color='blue', label='Prediction')

#信頼区間のプロット
plt.fill_between(x_pred.ravel(), y_pred - sigma, y_pred + sigma, color='blue', alpha=0.2, label='Confidence interval')

plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()