
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 sobre datos en streaming. River es el resultado de la fusión entre 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í hay un vistazo 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 qué tan bien lo está haciendo el 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 artificial. Te invitamos a consultar 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 disponibles para Linux, MacOS y Windows. Esto significa que lo más probable es que no tengas 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 así:
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 hace el trabajo perfectamente. Un enfoque en línea podría encajar si:
Algunas particularidades de River son que:
Siéntete libre de contribuir de la forma que prefieras, siempre estamos abiertos a nuevas ideas y enfoques.
Consulta las pautas de contribución si quieres introducir modificaciones en el código base.