
Biblioteca de aprendizado de máquina em streaming para aprendizado incremental em fluxos de dados, fornecendo estimadores online, detecção de drift e anomalias, pipelines, métricas e conjuntos de dados integrados para Python.
River é uma biblioteca Python para aprendizado de máquina online. Seu objetivo é ser a biblioteca mais amigável para realizar aprendizado de máquina em dados de streaming. River é o resultado da fusão entre creme e scikit-multiflow.
Como exemplo rápido, vamos treinar uma regressão logística para classificar o conjunto de dados de phishing de sites. Veja a primeira observação do conjunto de dados.
>>> 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
Agora vamos executar o modelo no conjunto de dados de forma streaming. Intercalamos sequencialmente as previsões e as atualizações do modelo. Enquanto isso, atualizamos uma métrica de desempenho para ver como o modelo está se saindo.
>>> 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%
Claro, este é apenas um exemplo artificial. Convidamos você a conferir a seção de introdução da documentação para um tutorial mais completo.
River foi projetado para funcionar com Python 3.11 e superior. A instalação pode ser feita com pip:
pip install river
Existem wheels disponíveis para Linux, MacOS e Windows. Isso significa que muito provavelmente você não precisará compilar o River a partir do código-fonte.
A interface online principal do River (learn_one / predict_one) não possui dependência de pandas. A interface de mini-batch (learn_many, predict_many, predict_proba_many, transform_many) é construída sobre pandas e é opcional:
pip install "river[pandas]"
Você pode instalar a versão de desenvolvimento mais recente do GitHub assim:
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
Este método requer ter Cython e Rust instalados na sua máquina.
River fornece implementações online das seguintes famílias de algoritmos:
River também fornece outras utilidades online:
Confira a API para uma visão geral abrangente
Você deve se perguntar se precisa de aprendizado de máquina online. A resposta provavelmente é não. Na maioria das vezes, o aprendizado em lote faz o trabalho muito bem. Uma abordagem online pode ser adequada se:
Algumas especificidades do River são que:
Sinta-se à vontade para contribuir da forma que preferir, estamos sempre abertos a novas ideias e abordagens.
Por favor, confira as diretrizes de contribuição se você quiser trazer modificações para a base de código.