
Streaming-Machine-Learning-Bibliothek für inkrementelles Lernen auf Datenströmen, die Online-Schätzer, Drift- und Anomalieerkennung, Pipelines, Metriken und integrierte Datensätze für Python bereitstellt.
River ist eine Python-Bibliothek für Online-Machine-Learning. Sie möchte die benutzerfreundlichste Bibliothek für maschinelles Lernen auf Streaming-Daten sein. River ist das Ergebnis eines Zusammenschlusses von creme und scikit-multiflow.
Als kurzes Beispiel trainieren wir eine logistische Regression, um den Website-Phishing-Datensatz zu klassifizieren. Hier ein Blick auf die erste Beobachtung im Datensatz.
>>> 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
Nun lassen wir das Modell auf dem Datensatz in einer Streaming-Weise laufen. Wir wechseln sequenziell zwischen Vorhersagen und Modell-Updates ab. Währenddessen aktualisieren wir eine Leistungsmetrik, um zu sehen, wie gut das Modell abschneidet.
>>> 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%
Natürlich ist das nur ein konstruiertes Beispiel. Wir laden Sie ein, den Abschnitt Einführung in der Dokumentation für ein ausführlicheres Tutorial anzusehen.
River ist für Python 3.11 und höher ausgelegt. Die Installation kann mit pip erfolgen:
pip install river
Es sind Wheels verfügbar für Linux, MacOS und Windows. Das bedeutet, dass Sie River höchstwahrscheinlich nicht aus dem Quellcode erstellen müssen.
Das zentrale Online-Interface von River (learn_one / predict_one) hat keine pandas-Abhängigkeit. Das Mini-Batch-Interface (learn_many, predict_many, predict_proba_many, transform_many) basiert auf pandas und ist optional:
pip install "river[pandas]"
Sie können die neueste Entwicklungsversion wie folgt von GitHub installieren:
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
Diese Methode erfordert, dass Cython und Rust auf Ihrem Rechner installiert sind.
River bietet Online-Implementierungen der folgenden Algorithmenfamilien:
River bietet außerdem weitere Online-Werkzeuge:
Eine umfassende Übersicht finden Sie in der API.
Sie sollten sich fragen, ob Sie Online-Machine-Learning benötigen. Die Antwort ist wahrscheinlich nein. In den meisten Fällen erledigt Batch-Lernen die Aufgabe völlig ausreichend. Ein Online-Ansatz könnte passend sein, wenn:
Einige Besonderheiten von River sind:
Sie können auf jede beliebige Weise mitwirken; wir sind immer offen für neue Ideen und Ansätze.
Bitte lesen Sie die Beitragsrichtlinien, wenn Sie Änderungen an der Codebasis vornehmen möchten.
Wenn River für Sie nützlich war und Sie es in einer wissenschaftlichen Veröffentlichung zitieren möchten, verweisen Sie bitte auf das bei JMLR veröffentlichte Paper:
@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 ist freie und Open-Source-Software, lizenziert unter der 3-Klausel-BSD-Lizenz.