À propos du projet

River est une bibliothèque Python open source dédiée à l'apprentissage automatique en ligne, c'est-à-dire l'apprentissage à partir de flux de données, une observation à la fois. Elle est présentée comme le résultat de la fusion des projets creme et scikit-multiflow, et son objectif déclaré est d'être une bibliothèque conviviale pour l'apprentissage automatique sur des données en streaming. L'interface de base est incrémentale : les modèles exposent learn_one et predict_one, de sorte que les prédictions et les mises à jour peuvent être entrelacées à mesure que chaque échantillon arrive, sans revisiter les données passées. Un exemple de démarrage rapide entraîne une régression logistique sur le jeu de données Phishing intégré en utilisant un pipeline de StandardScaler suivi de LogisticRegression, tandis qu'une métrique Accuracy est mise à jour en parallèle du modèle. L'installation se fait via pip (pip install river), avec des wheels publiées pour Linux, macOS et Windows. Le projet cible Python 3.11 et versions ultérieures. L'interface en ligne de base n'a pas de dépendance pandas ; une interface mini-batch (learn_many, predict_many, predict_proba_many, transform_many) est construite sur pandas et est optionnelle via l'extension river[pandas]. Une version de développement peut être installée depuis GitHub, ce qui nécessite Cython et Rust. Les familles d'algorithmes couvertes incluent les modèles linéaires avec une gamme d'optimiseurs, les arbres de décision et les forêts aléatoires, les plus proches voisins approximatifs, la détection d'anomalies, la détection de dérive, les systèmes de recommandation, la prévision de séries temporelles, les bandits, les machines à factorisation, l'apprentissage déséquilibré, le clustering, le bagging/boosting/stacking et l'apprentissage actif. Des utilitaires en ligne supplémentaires incluent l'extraction et la sélection de caractéristiques, les statistiques et métriques en ligne, le prétraitement, les jeux de données intégrés, la validation progressive de modèles et les pipelines de modèles. Le README encadre explicitement quand l'apprentissage en ligne est approprié : lorsqu'un modèle doit apprendre de nouvelles données sans revisiter le passé, lorsque la robustesse à la dérive de concept est importante, ou lorsque le développement doit ressembler à des environnements de production basés sur des événements. Il note également que River met l'accent sur la clarté et l'expérience utilisateur plutôt que sur la performance, est rapide pour traiter un échantillon à la fois, et s'intègre au reste de l'écosystème Python. La documentation est hébergée sur riverml.xyz, avec des liens vers les versions des packages, une liste awesome-online-machine-learning, une présentation GAIA 2022 et un article KDD'22 sur le clustering en ligne. Le projet est sous licence BSD 3 clauses, dispose d'une feuille de route publique, et accueille les discussions, les problèmes et les contributions. Un article JMLR est disponible pour la citation.