River est une bibliothèque Python pour l'apprentissage automatique en ligne. Il vise à être la bibliothèque la plus conviviale pour effectuer l'apprentissage automatique sur les données de streaming. La rivière est le résultat d'une fusion entre Creme et Scikit-Multiflow.
À titre d'exemple rapide, nous allons former une régression logistique pour classer l'ensemble de données de phishing du site Web. Voici un aperçu de la première observation de l'ensemble de données.
>>> à partir de Pprint Import Pprint >>> From River Import DataSets >>> DataSet = DataSets.Phishing () >>> pour x, y dans l'ensemble de données: ... pprint (x) ... imprimer (y) ... Break {'Age_of_domain': 1, 'anchor_from_other_domain': 0.0, 'vide_server_form_handler': 0.0, 'https': 0.0, 'ip_in_url': ':' 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 l'ensemble de données d'une manière en streaming. Nous interdisons 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 à quel point le modèle va bien.
>>> De la rivière Importation Composée >>> De la rivière Importation Linaire_Model >>> De la rivière Importation des métriques >>> De la prétraitement des importations de la rivière >>> modèle = compose.pipeline ( ... Pretrocessing.StandardsCaler (), ... linear_model.logisticRegression () ...) >>> Metric = Metrics.Accuracy () >>> pour x, y dans l'ensemble de données: ... y_pred = modèle.prect_one (x) # faire une prédiction ... Metric.update (y, y_pred) # Mettez à jour la métrique ... modèle.learn_one (x, y) # faire apprendre le modèle >>> Métricac : 89,28%
Bien sûr, ce n'est qu'un exemple artificiel. Nous vous invitons à vérifier la section Introduction de la documentation pour un tutoriel plus approfondi.
La rivière est destinée à travailler avec Python 3.8 et au-dessus . L'installation peut être effectuée avec pip
:
Pip Installer River
Il y a des roues disponibles pour Linux, MacOS et Windows. Cela signifie que vous n'aurez probablement pas à construire de la rivière à partir de la source.
Vous pouvez installer la dernière version de développement de GitHub en tant que SO:
pip install git + https: //github.com/online-ml/river - mise à niveau PIP install git + ssh: //[email protected]/online-ml/river.git - mise à niveau # utilisant ssh
Cette méthode nécessite que le cython et la rouille soient installés sur votre machine.
River fournit des implémentations en ligne de la famille d'algorithmes suivants:
Modèles linéaires, avec un large éventail d'optimiturs
Arbres de décision et forêts aléatoires
(Approximatif) voisins les plus proches
Détection d'anomalie
Détection de dérive
Systèmes de recommandation
Prévision des séries chronologiques
Bandits
Machines de factorisation
Apprentissage déséquilibré
Regroupement
Esachant / boosting / empilement
Apprentissage actif
River fournit également d'autres services publics en ligne:
Extraction et sélection des caractéristiques
Statistiques et métriques en ligne
Prétraitement
Ensembles de données intégrés
Validation progressive du modèle
Pipelines modèles
Consultez l'API pour un aperçu complet
Vous devez 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 correspondre à la facture si:
Vous voulez un modèle qui peut apprendre des nouvelles données sans avoir à revisiter les données passées.
Vous voulez un modèle robuste à la dérive du concept.
Vous souhaitez développer votre modèle d'une manière plus proche de ce qui se produit dans un contexte de production, qui est généralement basé sur des événements.
Certaines spécificités de la rivière sont que:
Il se concentre sur la clarté et l'expérience utilisateur, plus que les performances.
Il est très rapide de traiter un échantillon à la fois. Essayez-le, vous verrez.
Il joue bien avec le reste de l'écosystème de Python.
Documentation
Versions de package
génial-machine-apprentissage
2022 Présentation à Gaia
Clustering en ligne: algorithmes, évaluation, métriques, applications et comparaison de KDD'22.
N'hésitez pas à contribuer de quelque manière que ce soit, nous sommes toujours ouverts aux nouvelles idées et approches.
Ouvrez une discussion si vous avez une question ou une enquête. Il est plus utile de poser votre question en public plutôt que de nous envoyer un e-mail privé. Il est également encouragé à ouvrir une discussion avant de contribuer, afin que tout le monde soit aligné et que des travaux inutiles soient évités.
N'hésitez pas à ouvrir un problème si vous pensez que vous avez repéré un bug ou un problème de performance.
Notre feuille de route est publique. N'hésitez pas à travailler sur tout ce qui attire votre attention ou à faire des suggestions.
Veuillez consulter les directives de contribution si vous souhaitez apporter des modifications à la base de code.
Si River vous a été utile et que vous souhaitez le citer dans une publication scientifique, veuillez vous référer au document publié sur JMLR:
@Article {Montiel2021river, title = {River: Machine Learning for Streaming Data in Python}, Author = {Montiel, Jacob and Halford, Max and Mastelini, Saulo Martiello et Bolitine, Geoffrey et Sourty, Raphael et Vaysse, Robin et Zouitine, Adilrey et Sourty, Raphael et Vaysse, Robin et Zouitine, Adilrey et Gomes, Heitor Murilo et Read, Jesse et Abdessalem, Talel et autres}, année = {2021}}
River est un logiciel gratuit et licencié en vertu de la licence BSD à 3 clauses.