import numpy as np

from tkmlr import create_model, regression_report

rng = np.random.default_rng(0)
X = np.linspace(0, 6, 40).reshape(-1, 1)
y = np.sin(X[:, 0]) + 0.05 * rng.normal(size=len(X))

for method in ["linear", "gpr"]:
    model = create_model(method)
    model.fit(X, y)
    pred = model.predict(X)
    print(method, regression_report(y, pred))

# PHYSBO, when installed:
# model = create_model("physbo", num_rand_basis=200, standardize=True, random_seed=0)
# model.fit(X, y)
# mean, std = model.predict(X, return_std=True)
# score = model.acquisition(X, mode="EI")
