Sobre el proyecto

River es una biblioteca de Python de código abierto dedicada al aprendizaje automático en línea, es decir, aprender de flujos de datos una observación a la vez. Se presenta como el resultado de la fusión de los proyectos creme y scikit-multiflow, y su objetivo declarado es ser una biblioteca fácil de usar para el aprendizaje automático sobre datos en streaming. La interfaz principal es incremental: los modelos exponen learn_one y predict_one, de modo que las predicciones y las actualizaciones pueden intercalarse a medida que llega cada muestra, sin revisar datos pasados. Un ejemplo de inicio rápido entrena una regresión logística sobre el conjunto de datos integrado Phishing usando un pipeline de StandardScaler seguido de LogisticRegression, mientras que una métrica Accuracy se actualiza junto con el modelo. La instalación se realiza mediante pip (pip install river), con wheels publicados para Linux, macOS y Windows. El proyecto está orientado a Python 3.11 y versiones superiores. La interfaz en línea principal no tiene dependencia de pandas; una interfaz de mini-lotes (learn_many, predict_many, predict_proba_many, transform_many) está construida sobre pandas y es opcional a través del extra river[pandas]. Se puede instalar una versión de desarrollo desde GitHub, que requiere Cython y Rust. Las familias de algoritmos cubiertas incluyen modelos lineales con una variedad de optimizadores, árboles de decisión y bosques aleatorios, vecinos más cercanos aproximados, detección de anomalías, detección de deriva, sistemas de recomendación, previsión de series temporales, bandits, máquinas de factorización, aprendizaje con desbalanceo, clustering, bagging/boosting/stacking y aprendizaje activo. Las utilidades en línea adicionales incluyen extracción y selección de características, estadísticas y métricas en línea, preprocesamiento, conjuntos de datos integrados, validación progresiva de modelos y pipelines de modelos. El README enmarca explícitamente cuándo es apropiado el aprendizaje en línea: cuando un modelo debe aprender de nuevos datos sin revisar el pasado, cuando importa la robustez frente a la deriva de concepto, o cuando el desarrollo debe parecerse a entornos de producción basados en eventos. También señala que River enfatiza la claridad y la experiencia de usuario por encima del rendimiento, es rápido al procesar una muestra a la vez y se integra con el resto del ecosistema de Python. La documentación está alojada en riverml.xyz, con enlaces a las versiones del paquete, una lista awesome-online-machine-learning, una presentación de GAIA de 2022 y un artículo de KDD'22 sobre clustering en línea. El proyecto tiene licencia BSD 3-clause, cuenta con una hoja de ruta pública y agradece debates, issues y contribuciones. Hay un artículo de JMLR disponible para citar.