models.compare()

Fits every model on each split’s training rows and scores its test

Usage

Source

models.compare(
    models,
    design,
    y,
    splits,
    scores,
    n_jobs=None,
)

predictions on every metric: one table across engines.

Parameters

models: dict

Name to model; each model has fit(design, y) returning an object with predict(design), as for cross_validate.

design: Design
y: list of float
splits: list of (list of int, list of int)
scores: dict

Name to score(y_test, predicted, test_design) -> float, losses (lower is better).

n_jobs: int = None
Threads; one per split by default.

Returns

Comparison

Examples

>>> from prospicio.models import Design, ElasticNet, Glm, compare, deviance_score, k_fold
>>> x = [i / 10 for i in range(40)]
>>> d = Design([[1.0] * 40, x], ["(Intercept)", "x"])
>>> y = [1.0 + 2.0 * v + (0.3 if i % 3 else -0.6) for i, v in enumerate(x)]
>>> c = compare({"glm": Glm("gaussian"), "ridge": ElasticNet("gaussian", alpha=0.0, lam=5.0)},
...             d, y, k_fold(40, 4, 1), {"deviance": deviance_score("gaussian")})
>>> c.best("deviance")

‘glm’

>>> [row["model"] for row in c.table()]

[‘glm’, ‘ridge’]