
Biblioteca de aprendizaje automático en streaming para aprendizaje incremental sobre flujos de datos, que proporciona estimadores en línea, detección de deriva y anomalías, pipelines, métricas y conjuntos de datos integrados para Python.
River es una biblioteca de Python para el aprendizaje automático en línea. Su objetivo es ser la biblioteca más fácil de usar para hacer aprendizaje automático con datos en streaming. River es el resultado de la fusión de creme y scikit-multiflow.
Como ejemplo rápido, entrenaremos una regresión logística para clasificar el conjunto de datos de phishing de sitios web. Aquí tienes una mirada a la primera observación del conjunto de datos.
>>> 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
Ahora ejecutemos el modelo sobre el conjunto de datos de forma continua. Intercalamos secuencialmente las predicciones y las actualizaciones del modelo. Mientras tanto, actualizamos una métrica de rendimiento para ver cómo le está yendo al modelo.
>>> 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%
Por supuesto, esto es solo un ejemplo sencillo. Te invitamos a revisar la sección de introducción de la documentación para un tutorial más completo.
River está pensado para funcionar con Python 3.11 y superior. La instalación se puede realizar con pip:
pip install river
Hay ruedas (wheels) disponibles para Linux, MacOS y Windows. Esto significa que probablemente no tendrás que compilar River desde el código fuente.
La interfaz en línea principal de River (learn_one / predict_one) no tiene dependencia de pandas. La interfaz de mini-lotes (learn_many, predict_many, predict_proba_many, transform_many) está construida sobre pandas y es opcional:
pip install "river[pandas]"
Puedes instalar la última versión de desarrollo desde GitHub de la siguiente manera:
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
Este método requiere tener Cython y Rust instalados en tu máquina.
River proporciona implementaciones en línea de las siguientes familias de algoritmos:
River también proporciona otras utilidades en línea:
Consulta la API para obtener una visión general completa.
Deberías preguntarte si necesitas aprendizaje automático en línea. Lo más probable es que la respuesta sea no. La mayoría de las veces el aprendizaje por lotes es más que suficiente. Un enfoque en línea puede ser adecuado si:
Algunas particularidades de River son:
Siéntete libre de contribuir de la forma que quieras; siempre estamos abiertos a nuevas ideas y enfoques.
Por favor, consulta las pautas de contribución si quieres realizar modificaciones en la base de código.
Si River te ha sido útil y deseas citarlo en una publicación científica, consulta el artículo publicado en 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 es un software libre y de código abierto bajo la licencia BSD de 3 cláusulas.