Python client for interacting with online-ml river server
Project description
River API Client
This is an API client created for django-river-ml that is intended to make it easy to interact with an online ML server providing river models (learning, predicting, etc.). It currently does not provide a terminal or command line client and is intended to be used from Python, but if there is a good use case for a command line set of interactions this can be added.
Quick Start
Given that you have a server running that implements the same space as django-river-ml, you can do the following. Note that if your server requires authentication, you can generate a token and export to:
export RIVER_ML_USER=dinosaur
export RIVER_ML_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
And then do the following example.
from river import datasets
from river import linear_model
from river import preprocessing
from riverapi.main import Client
def main():
# This is the default, just to show how to customize
cli = Client("http://localhost:8000")
# Basic server info (usually no auth required)
cli.info()
# Upload a model
model = preprocessing.StandardScaler() | linear_model.LinearRegression()
# Save the model name for other endpoint interaction
model_name = cli.upload_model(model, "regression")
print("Created model %s" % model_name)
# Train on some data
for x, y in datasets.TrumpApproval().take(100):
cli.learn(model_name, x=x, y=y)
# Get the model (this is a json representation)
model_json = cli.get_model_json(model_name)
model_json
# Saves to model-name>.pkl in pwd unless you provide a second arg, dest
cli.download_model(model_name)
# Make predictions
for x, y in datasets.TrumpApproval().take(10):
res = cli.predict(model_name, x=x)
print(res)
# By default the server will generate an identifier on predict that you can
# later use to label it. Let's do that for the last predict call!
identifier = res['identifier']
# Let's pretend we now have a label Y for the data we didn't before.
# The identifier is going to allow the server to find the features,
# x, and we just need to do:
res = cli.label(label=y, identifier=identifier, model_name=model_name)
print(res)
# Note that model_name is cached too, and we provide it here just
# to ensure the identifier is correctly associated.
# Get stats and metrics for the model
cli.stats(model_name)
cli.metrics(model_name)
# Get all models
print(cli.models())
# Stream events
for event in cli.stream_events():
print(event)
# Stream metrics
for event in cli.stream_metrics():
print(event)
# Delete the model
cli.delete_model(model_name)
if __name__ == "__main__":
main()
Contributors
We use the all-contributors tool to generate a contributors graphic below.
Vanessasaurus 💻 |
License
This code is licensed under the MPL 2.0 LICENSE.
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 riverapi-0.0.21.tar.gz
.
File metadata
- Download URL: riverapi-0.0.21.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.63.0 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e29b7104c6028db6c3676f45dedc52f32375d3eda94fa8edd466bf7ef9954ff |
|
MD5 | 66d346773c743686d9ad9af643058757 |
|
BLAKE2b-256 | 9cc7da0a16b47a7a38a32e02738bd147bf3665679dd211776070da8a65e1fbb3 |
File details
Details for the file riverapi-0.0.21-py3-none-any.whl
.
File metadata
- Download URL: riverapi-0.0.21-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.63.0 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 380472a067252f5011a5d616049b64cdc8f46aade64ce7a2f8bca92972de0df9 |
|
MD5 | 51b488a0153c4b0d8828376694d4f89d |
|
BLAKE2b-256 | 4c0b027dcdb3495585017d4dea39be0340d62776e690d923f2763079d9a0f57f |