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
Hashes for riverapi-0.0.21-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 380472a067252f5011a5d616049b64cdc8f46aade64ce7a2f8bca92972de0df9 |
|
MD5 | 51b488a0153c4b0d8828376694d4f89d |
|
BLAKE2b-256 | 4c0b027dcdb3495585017d4dea39be0340d62776e690d923f2763079d9a0f57f |