
192
# x と同じサイズで要素が 0 の ndarray 型を作成
y = np.zeros_like(x)
# ここでは式 5-66 ではなく式 5-65 で実装
for j in range(m):
y = y + w[j] * gauss(x, mu[j], s)
y = y + w[m] # phi を掛けないパラメータを最後に加える
return y
次に、アルゴリズムに直接は関係しないのですが、平均二乗誤差を計算する関数
mse_gauss_func(x, t, w) をリスト 5-3-(5) で作っておきます。フィッティングの
程度を算出するためです。
# リスト 5-3-(5)
# 線形基底関数モデルの平均二乗誤差 (MSE) ----------
def mse_gauss_func(x, t, w):
y = gauss_func(w, x)
mse = np.mean((y - t) ** 2)
return mse
そして、本命の線形基底関数モデルのパラメータの解析解を与える fit_gauss_
func(x, t, m) をリスト 5-3-(6) で作ります。
# リスト 5-3-(6)
# 線形基底関数モデルの厳密解 ----------
def fit_gauss_func(x, t, m):
mu = np.linspace(5, 30, m)
s = mu[1] - mu[0]
n = x.shape[0]
# 式 5-69 の計画行列 phi を作成
phi ...