
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. O objetivo é ser a biblioteca mais amigável para fazer aprendizado de máquina em dados em 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 websites. Aqui está uma amostra da 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 contínua (streaming). Intercalamos sequencialmente previsões e 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, isso é apenas um exemplo ilustrativo. Convidamos você a conferir a seção de introdução da documentação para um tutorial mais completo.
O River foi feito para funcionar com Python 3.11 e superior. A instalação pode ser feita com o pip:
pip install river
Existem pacotes wheel 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 tem dependência de pandas. A interface de mini-lote (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 da seguinte forma:
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
Esse método requer que o Cython e o Rust estejam instalados na sua máquina.
O River fornece implementações online das seguintes famílias de algoritmos:
O River também oferece outros utilitários 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 é suficiente. Uma abordagem online pode ser adequada se:
Algumas especificidades do River são:
Sinta-se à vontade para contribuir da forma que preferir; estamos sempre abertos a novas ideias e abordagens.
Por favor, consulte as diretrizes de contribuição se quiser fazer modificações no código.