
Libreria di machine learning in streaming per l'apprendimento incrementale su flussi di dati, con stimatori online, rilevamento di drift e anomalie, pipeline, metriche e dataset integrati per Python.
River è una libreria Python per machine learning online. Il suo obiettivo è essere la libreria più user-friendly per fare machine learning su dati in streaming. River è il risultato di una fusione tra creme e scikit-multiflow.
Come rapido esempio, addestreremo una regressione logistica per classificare il dataset di phishing dei siti web. Ecco uno sguardo alla prima osservazione del dataset.
>>> 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
Ora eseguiamo il modello sul dataset in modalità streaming. Intervalliamo in sequenza le predizioni e gli aggiornamenti del modello. Nel frattempo, aggiorniamo una metrica di performance per vedere quanto bene sta andando il modello.
>>> 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%
Ovviamente, questo è solo un esempio fittizio. Ti invitiamo a consultare la sezione introduzione della documentazione per un tutorial più approfondito.
River è pensato per funzionare con Python 3.11 e versioni successive. L'installazione può essere effettuata con pip:
pip install river
Sono disponibili wheel per Linux, macOS e Windows. Questo significa che molto probabilmente non dovrai compilare River dal sorgente.
L'interfaccia online principale di River (learn_one / predict_one) non ha dipendenze da pandas. L'interfaccia mini-batch (learn_many, predict_many, predict_proba_many, transform_many) è basata su pandas ed è opzionale:
pip install "river[pandas]"
Puoi installare l'ultima versione di sviluppo da GitHub in questo modo:
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
Questo metodo richiede che Cython e Rust siano installati sulla tua macchina.
River fornisce implementazioni online delle seguenti famiglie di algoritmi:
River offre anche altre utility online:
Dai un'occhiata alle API per una panoramica completa
Devi chiederti se ti serve il machine learning online. La risposta è probabilmente no. Nella maggior parte dei casi l'apprendimento batch fa perfettamente al caso tuo. Un approccio online potrebbe essere adatto se:
Alcune specificità di River sono:
Sentiti libero di contribuire come preferisci, siamo sempre aperti a nuove idee e approcci.
Dai un'occhiata alle linee guida per i contributi se vuoi apportare modifiche al codice.
Se River ti è stato utile e desideri citarlo in una pubblicazione scientifica, fai riferimento all'articolo pubblicato su 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 è un software libero e open-source distribuito sotto la licenza BSD a 3 clausole.