
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 vise à être la bibliothèque la plus conviviale pour faire de l'apprentissage automatique sur des données en flux. River est le résultat de la fusion entre creme et scikit-multiflow.
Comme exemple rapide, nous allons entraîner une régression logistique pour classifier le jeu de données de 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
Maintenant, exécutons le modèle sur le jeu de données de manière streaming. Nous entrelaçons séquentiellement les prédictions et les mises à jour du modèle. Pendant ce temps, nous mettons à jour une métrique de performance pour 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 supé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 depuis les sources.
L'interface en ligne principale de River (learn_one / predict_one) n'a pas de dépendance à pandas. L'interface mini-batch (learn_many, predict_many, predict_proba_many, transform_many) est construite sur pandas et est optionnelle :
pip install "river[pandas]"
Vous pouvez installer la dernière version de développement depuis GitHub comme ceci :
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 un aperçu complet
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 le travail. Une approche en ligne pourrait convenir si :
Quelques spécificités de River sont que :
N'hésitez pas à contribuer de la manière que vous souhaitez, nous sommes toujours ouverts aux nouvelles idées et approches.
Veuillez consulter les directives de contribution si vous souhaitez apporter des modifications à la base de code.