## models.compare()


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


Usage

``` python
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](models.cross_validate.md#prospicio.models.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

``` python
>>> 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'

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

\['glm', 'ridge'\]
