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

引き続きガウス過程回帰(GPR)を勉強中。今回はGpy版。最近はとりあえずchatGPTに投げて、その中身を調べて勉強してます。

 

kernelをGPy.kern.Linearとすることで線形モデルに近くなるらしい。

 

import numpy as np
import GPy
import matplotlib.pyplot as plt

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

# 線形カーネルを使ったGPRモデル
kernel = GPy.kern.Linear(input_dim=1, variances=1)
model = GPy.models.GPRegression(x, y, kernel)

# 最適化
model.optimize()

# 予測値と信頼区間の計算
x_pred = np.linspace(0, 6, 100).reshape(-1, 1)
mean, cov = model.predict(x_pred, full_cov=True)
std_dev = np.sqrt(np.diag(cov))

# 結果
plt.figure()
plt.plot(x, y, "kx", mew=2, label="Data")
plt.plot(x_pred, mean, "b-", label="GPR Mean")
plt.fill_between(x_pred[:, 0], mean[:, 0] - 2 * std_dev, mean[:, 0] + 2 * std_dev, alpha=0.3, label="95% Confidence Interval")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()

 

ちなみに非線形の解析になるとこんな感じだった。

kernel = GPy.kern.RBF(input_dim=1, variance=1, lengthscale=1)