
Библиотека потокового машинного обучения для инкрементального обучения на потоках данных, предоставляющая онлайн-оценщики, обнаружение дрейфа и аномалий, конвейеры, метрики и встроенные наборы данных для 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 заключаются в следующем:
Не стесняйтесь вносить вклад любым удобным для вас способом, мы всегда открыты для новых идей и подходов.
Пожалуйста, ознакомьтесь с правилами участия, если вы хотите внести изменения в кодовую базу.