Slide 40
Slide 40 text
AI 40
▪ 初期化とカーネル関数
ガウス過程回帰 - 実装 (2/3)
class GaussianProcess:
def __init__(self, X, y, n_max_data, gamma, lambda_):
n_data, self.n_features = X.shape
self.n_data = n_data
self.gamma = gamma
self.lambda_ = lambda_
self.X = np.empty((n_max_data, self.n_features))
self.X[:n_data] = X
self.y = np.empty(n_max_data)
self.y[:n_data] = y
self.LD = np.empty((n_max_data, n_max_data))
self.LD[:n_data, :n_data] = self.kernel_func(X, X)
np.fill_diagonal(self.LD[:n_data, :n_data], self.LD[:n_data, :n_data].diagonal() + lambda_)
ldl(self.LD[:n_data, :n_data])
def kernel_func(self, A, B=None):
if B is None:
return np.ones(len(A))
D = A[:, None, :] - B[None, :, :]
np.square(D, out=D)
K = D.sum(2)
K *= -self.gamma
np.exp(K, out=K)
return K