
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 Machine Learning auf Streaming-Daten sein. River ist das Ergebnis einer Fusion von creme und scikit-multiflow.
Als kurzes Beispiel trainieren wir eine logistische Regression zur Klassifizierung des Website-Phishing-Datensatzes. Hier ist 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 in Streaming-Manier auf dem Datensatz laufen. Wir verschachteln sequenziell Vorhersagen und Modell-Updates. 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 dies nur ein konstruiertes Beispiel. Wir laden Sie ein, den Abschnitt Einführung der Dokumentation für ein ausführlicheres Tutorial zu besuchen.
River ist für Python 3.11 und höher ausgelegt. Die Installation kann mit pip erfolgen:
pip install river
Es gibt Wheels für Linux, MacOS und Windows. Das bedeutet, dass Sie River höchstwahrscheinlich nicht aus dem Quellcode bauen müssen.
Die zentrale Online-Schnittstelle von River (learn_one / predict_one) hat keine pandas-Abhängigkeit. Die Mini-Batch-Schnittstelle (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 von GitHub wie folgt 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 Algorithmusfamilien:
River bietet außerdem weitere Online-Werkzeuge:
Werfen Sie einen Blick auf die API für einen umfassenden Überblick
Sie sollten sich fragen, ob Sie Online-Machine-Learning benötigen. Die Antwort ist wahrscheinlich nein. In den meisten Fällen erledigt Batch-Learning die Aufgabe vollkommen ausreichend. Ein Online-Ansatz könnte passen, wenn:
Einige Besonderheiten von River sind:
Fühlen Sie sich frei, auf jede Art und Weise beizutragen, die Ihnen gefällt – wir sind immer offen für neue Ideen und Ansätze.
Bitte lesen Sie die Beitragsrichtlinien, wenn Sie Änderungen am Code vornehmen möchten.