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