Skip to content

Minimal Training Example

Train surrogate models from a CSV dataset.

Dataset

Example CSV:

x1,x2,y1,y2
0.1,1.2,10.5,200
0.2,1.5,11.3,210
0.3,1.8,12.7,225
  • x1, x2 → input features
  • y1, y2 → prediction targets

Single-Output Training

from pathlib import Path

from simml.surrogate.models import (
    LinearModelConfig,
    GaussianProcessModelConfig,
    NeuralNetworkModelConfig,
)

from simml.surrogate.trainer import (
    SurrogateTrainer,
)


trainer = SurrogateTrainer(
    feature_names=["x1", "x2"],

    target_names=["y1", "y2"],

    model_configs=[
        LinearModelConfig(),

        GaussianProcessModelConfig(),

        NeuralNetworkModelConfig(
            hidden_layer_sizes=[64, 64],
        ),
    ],

    n_folds=5,
)


results = trainer.run(
    Path("dataset.csv")
)

trainer.print_best(
    results,
    trainer.target_names,
)

Saved models:

models_saved/
├── y1/
└── y2/

Multi-Output Training

from pathlib import Path

from simml.surrogate.models import (
    LinearModelConfig,
    GaussianProcessModelConfig,
)

from simml.surrogate.multi_trainer import (
    MultiOutputSurrogateTrainer,
)


trainer = MultiOutputSurrogateTrainer(
    feature_names=["x1", "x2"],

    target_names=["y1", "y2"],

    model_configs=[
        LinearModelConfig(),
        GaussianProcessModelConfig(),
    ],
)


results = trainer.run(
    Path("dataset.csv")
)

trainer.print_best(results)

Saved models:

models_saved_multi/

Loading a Saved Model

import joblib
import numpy as np


pipeline = joblib.load(
    "models_saved/y1/Gaussian_Process.joblib"
)

X = np.array([
    [0.15, 1.4],
])

prediction = pipeline.predict(X)

print(prediction)