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
File details
Details for the file ensemble-pkg-0.0.2.tar.gz
.
File metadata
- Download URL: ensemble-pkg-0.0.2.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 662c2e5eb266903d57a92feb825c39a57bb5d3b1d852acf0e23618ae65a41663 |
|
MD5 | 7bb2aa31a01f96296c8d7d76149bca7f |
|
BLAKE2b-256 | ad70733204fd4d433444e3d327636d9c21a791f7aae7e3751c3168301762e322 |
File details
Details for the file ensemble_pkg-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: ensemble_pkg-0.0.2-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 403c0c1491d6da002a89fa414a91126e0f06b700554bccbb2aacc7d1b17e6f23 |
|
MD5 | 1c1a7fdb7f023c48579ec35dceffdfe5 |
|
BLAKE2b-256 | 71d72697dd49dcb199270bd10e12c50dfa0973ab9b1f3b0c1b365eb3e540a076 |