Note: Gaussian Processes, a distribution over functions instead of over parameters
Intermediate classical-mlprobabilisticgaussian-processes
Implement:
def rbf_kernel(input_a: np.ndarray, input_b: np.ndarray, length_scale: float, variance: float) -> np.ndarray: ...
def gp_predict(input_train, targets_train, input_test, length_scale, variance, noise) -> tuple[np.ndarray, np.ndarray]: ...
gp_predict returns both a mean prediction and a variance (uncertainty) at every test point, this is the whole point of a Gaussian Process, not an add-on.