File size: 645 Bytes
536ba3d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from __future__ import annotations

import numpy as np

from src.models.ensemble.stacking import StackingEnsemble, WeightedAverageEnsemble


def test_stacking_and_weighted_ensemble():
    X = np.array([[1.0], [2.0], [3.0], [4.0]])
    y = np.array([2.0, 4.0, 6.0, 8.0])

    learners = [
        ("m1", lambda z: z[:, 0] * 2.0),
        ("m2", lambda z: z[:, 0] * 1.8),
    ]

    stack = StackingEnsemble(learners)
    stack.fit(X, y, n_folds=2)
    preds = stack.predict(X)
    assert preds.shape == y.shape

    wa = WeightedAverageEnsemble(learners)
    wa.fit(X, y)
    w = wa.get_weights_dict()
    assert np.isclose(sum(w.values()), 1.0)