
Библиотека потокового машинного обучения для инкрементального обучения на потоках данных, предоставляющая онлайн-оценщики, обнаружение дрейфа и аномалий, конвейеры, метрики и встроенные наборы данных для Python.
River — это библиотека Python для онлайн-машинного обучения. Она стремится быть максимально удобной для пользователя библиотекой для машинного обучения на потоковых данных. River — результат слияния creme и scikit-multiflow.
В качестве краткого примера мы обучим логистическую регрессию для классификации набора данных о фишинговых сайтах. Вот как выглядит первое наблюдение в наборе данных.
>>> 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
Теперь запустим модель на наборе данных в потоковом режиме. Мы последовательно чередуем прогнозы и обновления модели. Параллельно мы обновляем метрику качества, чтобы видеть, насколько хорошо работает модель.
>>> 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%
Конечно, это всего лишь искусственный пример. Приглашаем вас ознакомиться с разделом Введение в документации, где представлен более подробный учебник.
River предназначен для работы с Python 3.11 и выше. Установку можно выполнить с помощью pip:
pip install river
Для Linux, MacOS и Windows доступны готовые колеса (wheels). Это означает, что вам, скорее всего, не придётся собирать River из исходников.
Основной онлайн-интерфейс River (learn_one / predict_one) не требует pandas. Мини-пакетный интерфейс (learn_many, predict_many, predict_proba_many, transform_many) построен на pandas и подключается по желанию:
pip install "river[pandas]"
Последнюю разрабатываемую версию можно установить из GitHub следующим образом:
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
Этот метод требует наличия Cython и Rust, установленных на вашем компьютере.
River предоставляет онлайн-реализации следующих семейств алгоритмов:
River также предоставляет другие онлайн-инструменты:
Ознакомьтесь с API для получения полного обзора
Стоит задать себе вопрос, нужно ли вам онлайн-машинное обучение. Ответ, скорее всего, нет. В большинстве случаев пакетное обучение вполне справляется с задачей. Онлайн-подход может подойти, если:
Некоторые особенности River заключаются в следующем:
Не стесняйтесь вносить вклад любым удобным для вас способом, мы всегда открыты для новых идей и подходов.
Пожалуйста, ознакомьтесь с правилами участия, если вы хотите внести изменения в кодовую базу.
Если River оказался полезен для вас, и вы хотите сослаться на него в научной публикации, пожалуйста, обратитесь к статье, опубликованной в 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 — это бесплатное программное обеспечение с открытым исходным кодом, распространяемое по лицензии BSD с тремя положениями (3-clause BSD).