
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 l'apprendimento automatico online. Mira a essere la libreria più user-friendly per fare machine learning su dati in streaming. River è il risultato della fusione tra creme e scikit-multiflow.
Come rapido esempio, addestreremo una regressione logistica per classificare il dataset di phishing di siti web. Ecco un'occhiata alla prima osservazione nel 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 sequenzialmente le previsioni e gli aggiornamenti del modello. Nel frattempo, aggiorniamo una metrica di prestazione 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%
Naturalmente, questo è solo un esempio artificioso. 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 dai sorgenti.
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) è costruita 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 fornisce anche altre utilità online:
Consulta l'API per una panoramica completa
Dovresti chiederti se hai bisogno dell'apprendimento automatico online. La risposta è probabilmente no. La maggior parte delle volte l'apprendimento batch fa egregiamente il suo lavoro. Un approccio online potrebbe essere adatto se:
Alcune specificità di River sono che:
Sentiti libero di contribuire in qualsiasi modo tu voglia, siamo sempre aperti a nuove idee e approcci.
Consulta le linee guida per i contributi se vuoi apportare modifiche alla code base.