
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.