Build deployable model ensembles without refactoring your code.
Project description
ensemble
A model ensemble utility optimized for low barrier integration
TL;DR this lets you use one thing to call many things.
Examples
Define your model functions and create your ensemble:
>>> from ensemble import Ensemble
>>> def square(x):
... return x**2
...
>>> def cube(y):
... return y**3
...
>>> my_ensemble = Ensemble(
... name='e1',
... children=[function1, function2],
... )
Multiplex between functions:
>>> my_ensemble(child='square', x=2)
4
>>> my_ensemble(child='cube', y=2)
8
Call all the models in the ensemble:
>>> my_ensemble.all(x=2, y=2)
{'square': 4, 'cube': 8}
You may instead decorate your model functions with @model
in order to attach them to an ensemble:
>>> from ensemble import child
>>> @child('e2')
... def func1(x):
... return x**2
...
>>> @child('e2')
... def func2(x):
... return x**3
...
>>> e2 = Ensemble('e2')
>>> e2.all(x=3)
{'func1': 9, 'func2': 27}
You may even attach a model to multiple ensembles! (this is one main reason ensemble is useful)
>>> @child('e2', 'e3')
... def func3(x, y):
... return x**3 + y
...
>>> e2.all(x=2, y=3)
{'func1': 4, 'func2': 8, 'func3': 11}
>>>
>>> e3 = Ensemble('e3')
>>> e3.all(x=2, y=3)
{'func3': 11}
If you forget what models are in your ensemble, just check:
>>> e2
Ensemble(
name='e2',
children={
'func1': <function func1 at 0x1024fa9d8>
'func2': <function func2 at 0x1024faa60>
'func3': <function func3 at 0x1024fa950>
},
weights=None,
)
>>> e3
Ensemble(
name='e3',
children={
'func3': <function func3 at 0x1024fa950>
},
weights=None,
)
In the above example, ensemble e2
contains func1
, func2
, and func3
, while ensemble e3
contains just func3
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ensemble_pkg-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 403c0c1491d6da002a89fa414a91126e0f06b700554bccbb2aacc7d1b17e6f23 |
|
MD5 | 1c1a7fdb7f023c48579ec35dceffdfe5 |
|
BLAKE2b-256 | 71d72697dd49dcb199270bd10e12c50dfa0973ab9b1f3b0c1b365eb3e540a076 |