BGM Python Tutorial

This page gives a concise end-to-end example using simulated heteroskedastic data.

import yaml
import numpy as np
from sklearn.model_selection import train_test_split
from bayesgm.models import BGM
from bayesgm.datasets import simulate_z_hetero

params = yaml.safe_load(open("src/configs/Sim_heteroskedastic.yaml", "r"))
X, Y = simulate_z_hetero(n=20000, k=10, d=params["x_dim"] - 1)
X_train, X_test, Y_train, _ = train_test_split(X, Y, test_size=0.1, random_state=123)
data_train = np.c_[X_train, Y_train].astype("float32")

# Instantiate a BGM model
model = BGM(params=params, random_seed=None)

# Train the BGM model with EGM initialization and iterative updating algorithm
model.fit(data=data_train, epochs=200, epochs_per_eval=10, use_egm_init=True, egm_n_iter=50000, egm_batches_per_eval=500, verbose=1)

# Prepare test data with missing values
data_test = np.hstack([X_test, np.full((X_test.shape[0], 1), np.nan)])

# Make predictions using the trained BGM model
data_x_pred, pred_interval = model.predict(
    data=data_test, alpha=0.05, n_mcmc=5000, step_size=0.01, seed=42
)

Outputs:

  • data_x_pred: posterior predictive samples.

  • pred_interval: posterior interval estimates under user-specified significance level.