
Bibliothèque d'apprentissage automatique en flux pour l'apprentissage incrémental sur des flux de données, fournissant des estimateurs en ligne, la détection de dérive et d'anomalies, des pipelines, des métriques et des jeux de données intégrés pour Python.
River est une bibliothèque Python pour l'apprentissage automatique en ligne. Elle a pour objectif d'être la bibliothèque la plus conviviale pour faire de l'apprentissage automatique sur des données en flux continu. River est le résultat d'une fusion entre creme et scikit-multiflow.
À titre d'exemple rapide, nous allons entraîner une régression logistique pour classer le jeu de données sur le phishing de sites web. Voici un aperçu de la première observation du jeu de données.
>>> from pprint import pprint
>>> from river import datasets
>>> dataset = datasets.Phishing()
>>> for x, y in dataset:
... pprint(x)
... print(y)
... break
{'age_of_domain': 1,
'anchor_from_other_domain': 0.0,
'empty_server_form_handler': 0.0,
'https': 0.0,
'ip_in_url': 1,
'is_popular': 0.5,
'long_url': 1.0,
'popup_window': 0.0,
'request_from_other_domain': 0.0}
True
Exécutons maintenant le modèle sur le jeu de données de manière continue. Nous alternons séquentiellement les prédictions et les mises à jour du modèle. Pendant ce temps, nous mettons à jour une métrique de performance afin de voir comment le modèle se comporte.
>>> from river import compose
>>> from river import linear_model
>>> from river import metrics
>>> from river import preprocessing
>>> model = compose.Pipeline(
... preprocessing.StandardScaler(),
... linear_model.LogisticRegression()
... )
>>> metric = metrics.Accuracy()
>>> for x, y in dataset:
... y_pred = model.predict_one(x) # make a prediction
... metric.update(y, y_pred) # update the metric
... model.learn_one(x, y) # make the model learn
>>> metric
Accuracy: 89.28%
Bien sûr, ce n'est qu'un exemple artificiel. Nous vous invitons à consulter la section introduction de la documentation pour un tutoriel plus complet.
River est conçu pour fonctionner avec Python 3.11 et versions ultérieures. L'installation peut se faire avec pip :
pip install river
Des wheels sont disponibles pour Linux, MacOS et Windows. Cela signifie que vous n'aurez très probablement pas à compiler River à partir des sources.
L'interface en ligne de base de River (learn_one / predict_one) ne dépend pas de pandas. L'interface par mini-lots (learn_many, predict_many, predict_proba_many, transform_many) est basée sur pandas et est optionnelle :
pip install "river[pandas]"
Vous pouvez installer la dernière version de développement depuis GitHub comme suit :
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
Cette méthode nécessite d'avoir Cython et Rust installés sur votre machine.
River fournit des implémentations en ligne des familles d'algorithmes suivantes :
River fournit également d'autres utilitaires en ligne :
Consultez l'API pour une vue d'ensemble complète
Vous devriez vous demander si vous avez besoin d'apprentissage automatique en ligne. La réponse est probablement non. La plupart du temps, l'apprentissage par lots fait très bien l'affaire. Une approche en ligne pourrait convenir si :
Parmi les spécificités de River :
N'hésitez pas à contribuer de la manière que vous souhaitez, nous sommes toujours ouverts aux nouvelles idées et approches.
Merci de consulter les directives de contribution si vous souhaitez apporter des modifications au code.
Si River vous a été utile et que vous souhaitez la citer dans une publication scientifique, veuillez vous référer à l'article publié dans JMLR :
@article{montiel2021river,
title={River: machine learning for streaming data in Python},
author={Montiel, Jacob and Halford, Max and Mastelini, Saulo Martiello
and Bolmier, Geoffrey and Sourty, Raphael and Vaysse, Robin and Zouitine, Adil
and Gomes, Heitor Murilo and Read, Jesse and Abdessalem, Talel and others},
year={2021}
}
River est un logiciel libre et open source sous licence BSD à 3 clauses.