deep-river


Namedeep-river JSON
Version 0.2.8 PyPI version JSON
download
home_pagehttps://github.com/online-ml/deep-river
SummaryOnline Deep Learning for river
upload_time2024-12-29 08:07:09
maintainerNone
docs_urlNone
authorCedric Kulbach
requires_python<3.13,>=3.10
licenseBSD-3-Clause
keywords online-learning deep-learning data-streams
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
  <img height="150px" src="https://raw.githubusercontent.com/online-ml/deep-river/master/docs/img/logo.png" alt="incremental dl logo">
</p>
<p align="center">
    <img alt="PyPI" src="https://img.shields.io/pypi/v/deep-river">
    <a href="https://codecov.io/gh/online-ml/deep-river" > 
        <img src="https://codecov.io/gh/online-ml/deep-river/branch/master/graph/badge.svg?token=ZKUIISZAYA"/> 
    </a>
    <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/deep-river">
    <img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/deep-river">
    <img alt="GitHub" src="https://img.shields.io/github/license/online-ml/deep-river">
    <a href="https://joss.theoj.org/papers/6a76784f55e8b041d71a7fa776eb386a"><img src="https://joss.theoj.org/papers/6a76784f55e8b041d71a7fa776eb386a/status.svg"></a>
</p>
<p align="center">
    deep-river is a Python library for online deep learning.
    deep-river's ambition is to enable <a href="https://www.wikiwand.com/en/Online_machine_learning">online machine learning</a> for neural networks.
    It combines the <a href="https://www.riverml.xyz">river</a> API with the capabilities of designing neural networks based on <a href="https://pytorch.org">PyTorch</a>.
</p>

## 📚 [Documentation](https://online-ml.github.io/deep-river/)
The [documentation](https://online-ml.github.io/deep-river/) contains an overview of all features of this repository as well as the repository's full features list. 
In each of these, the git repo reference is listed in a section that shows [examples](https://github.com/online-ml/deep-river/blob/master/docs/examples) of the features and functionality.
As we are always looking for further use cases and examples, feel free to contribute to the documentation or the repository itself via a pull request

## 💈 Installation

```shell
pip install deep-river
```
or
```shell
pip install "river[deep]"
```
You can install the latest development version from GitHub as so:

```shell
pip install https://github.com/online-ml/deep-river/archive/refs/heads/master.zip
```

## 🍫 Quickstart

We build the development of neural networks on top of the <a href="https://www.riverml.xyz">river API</a> and refer to the rivers design principles.
The following example creates a simple MLP architecture based on PyTorch and incrementally predicts and trains on the website phishing dataset.
For further examples check out the <a href="https://online-ml.github.io/deep-river">Documentation</a>.

### Classification

```python
>>> from river import metrics, datasets, preprocessing, compose
>>> from deep_river import classification
>>> from torch import nn
>>> from torch import optim
>>> from torch import manual_seed

>>> _ = manual_seed(42)

>>> class MyModule(nn.Module):
...     def __init__(self, n_features):
...         super(MyModule, self).__init__()
...         self.dense0 = nn.Linear(n_features, 5)
...         self.nonlin = nn.ReLU()
...         self.dense1 = nn.Linear(5, 2)
...         self.softmax = nn.Softmax(dim=-1)
...
...     def forward(self, X, **kwargs):
...         X = self.nonlin(self.dense0(X))
...         X = self.nonlin(self.dense1(X))
...         X = self.softmax(X)
...         return X

>>> model_pipeline = compose.Pipeline(
...     preprocessing.StandardScaler(),
...     classification.Classifier(module=MyModule, loss_fn='binary_cross_entropy', optimizer_fn='adam')
... )

>>> dataset = datasets.Phishing()
>>> metric = metrics.Accuracy()

>>> for x, y in dataset:
...     y_pred = model_pipeline.predict_one(x)  # make a prediction
...     metric.update(y, y_pred)  # update the metric
...     model_pipeline.learn_one(x, y)  # make the model learn
>>> print(f"Accuracy: {metric.get():.4f}")
Accuracy: 0.7264

```
### Multi Target Regression 
```python
>>> from river import evaluate, compose
>>> from river import metrics
>>> from river import preprocessing
>>> from river import stream
>>> from sklearn import datasets
>>> from torch import nn
>>> from deep_river.regression.multioutput import MultiTargetRegressor

>>> class MyModule(nn.Module):
...     def __init__(self, n_features):
...         super(MyModule, self).__init__()
...         self.dense0 = nn.Linear(n_features, 3)
...
...     def forward(self, X, **kwargs):
...         X = self.dense0(X)
...         return X

>>> dataset = stream.iter_sklearn_dataset(
...         dataset=datasets.load_linnerud(),
...         shuffle=True,
...         seed=42
...     )
>>> model = compose.Pipeline(
...     preprocessing.StandardScaler(),
...     MultiTargetRegressor(
...         module=MyModule,
...         loss_fn='mse',
...         lr=0.3,
...         optimizer_fn='sgd',
...     ))
>>> metric = metrics.multioutput.MicroAverage(metrics.MAE())
>>> ev = evaluate.progressive_val_score(dataset, model, metric)
>>> print(f"MicroAverage(MAE): {metric.get():.2f}")
MicroAverage(MAE): 34.31

```

### Anomaly Detection

```python
>>> from deep_river.anomaly import Autoencoder
>>> from river import metrics
>>> from river.datasets import CreditCard
>>> from torch import nn
>>> import math
>>> from river.compose import Pipeline
>>> from river.preprocessing import MinMaxScaler

>>> dataset = CreditCard().take(5000)
>>> metric = metrics.RollingROCAUC(window_size=5000)

>>> class MyAutoEncoder(nn.Module):
...     def __init__(self, n_features, latent_dim=3):
...         super(MyAutoEncoder, self).__init__()
...         self.linear1 = nn.Linear(n_features, latent_dim)
...         self.nonlin = nn.LeakyReLU()
...         self.linear2 = nn.Linear(latent_dim, n_features)
...         self.sigmoid = nn.Sigmoid()
...
...     def forward(self, X, **kwargs):
...         X = self.linear1(X)
...         X = self.nonlin(X)
...         X = self.linear2(X)
...         return self.sigmoid(X)

>>> ae = Autoencoder(module=MyAutoEncoder, lr=0.005)
>>> scaler = MinMaxScaler()
>>> model = Pipeline(scaler, ae)

>>> for x, y in dataset:
...     score = model.score_one(x)
...     model.learn_one(x=x)
...     metric.update(y, score)
...
>>> print(f"Rolling ROCAUC: {metric.get():.4f}")
Rolling ROCAUC: 0.8901

```

## 🏫 Affiliations

<p align="center">
    <img src="https://upload.wikimedia.org/wikipedia/de/thumb/4/44/Fzi_logo.svg/1200px-Fzi_logo.svg.png?raw=true" alt="FZI Logo" height="200"/>
</p>

<p align="center">
    <img src="https://lieferbotnet.de/wp-content/uploads/2022/09/LieferBotNet-Logo.png?raw=true" alt="Lieferbot net" height="200"/>
</p>


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/online-ml/deep-river",
    "name": "deep-river",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.10",
    "maintainer_email": null,
    "keywords": "online-learning, deep-learning, data-streams",
    "author": "Cedric Kulbach",
    "author_email": "cedric.kulbach@googlemail.com",
    "download_url": "https://files.pythonhosted.org/packages/73/60/1c15bbe438aa15604dce46e0e0b180667c8ce132700b270db1de0798eef2/deep_river-0.2.8.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n  <img height=\"150px\" src=\"https://raw.githubusercontent.com/online-ml/deep-river/master/docs/img/logo.png\" alt=\"incremental dl logo\">\n</p>\n<p align=\"center\">\n    <img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/deep-river\">\n    <a href=\"https://codecov.io/gh/online-ml/deep-river\" > \n        <img src=\"https://codecov.io/gh/online-ml/deep-river/branch/master/graph/badge.svg?token=ZKUIISZAYA\"/> \n    </a>\n    <img alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/deep-river\">\n    <img alt=\"PyPI - Downloads\" src=\"https://img.shields.io/pypi/dm/deep-river\">\n    <img alt=\"GitHub\" src=\"https://img.shields.io/github/license/online-ml/deep-river\">\n    <a href=\"https://joss.theoj.org/papers/6a76784f55e8b041d71a7fa776eb386a\"><img src=\"https://joss.theoj.org/papers/6a76784f55e8b041d71a7fa776eb386a/status.svg\"></a>\n</p>\n<p align=\"center\">\n    deep-river is a Python library for online deep learning.\n    deep-river's ambition is to enable <a href=\"https://www.wikiwand.com/en/Online_machine_learning\">online machine learning</a> for neural networks.\n    It combines the <a href=\"https://www.riverml.xyz\">river</a> API with the capabilities of designing neural networks based on <a href=\"https://pytorch.org\">PyTorch</a>.\n</p>\n\n## \ud83d\udcda [Documentation](https://online-ml.github.io/deep-river/)\nThe [documentation](https://online-ml.github.io/deep-river/) contains an overview of all features of this repository as well as the repository's full features list. \nIn each of these, the git repo reference is listed in a section that shows [examples](https://github.com/online-ml/deep-river/blob/master/docs/examples) of the features and functionality.\nAs we are always looking for further use cases and examples, feel free to contribute to the documentation or the repository itself via a pull request\n\n## \ud83d\udc88 Installation\n\n```shell\npip install deep-river\n```\nor\n```shell\npip install \"river[deep]\"\n```\nYou can install the latest development version from GitHub as so:\n\n```shell\npip install https://github.com/online-ml/deep-river/archive/refs/heads/master.zip\n```\n\n## \ud83c\udf6b Quickstart\n\nWe build the development of neural networks on top of the <a href=\"https://www.riverml.xyz\">river API</a> and refer to the rivers design principles.\nThe following example creates a simple MLP architecture based on PyTorch and incrementally predicts and trains on the website phishing dataset.\nFor further examples check out the <a href=\"https://online-ml.github.io/deep-river\">Documentation</a>.\n\n### Classification\n\n```python\n>>> from river import metrics, datasets, preprocessing, compose\n>>> from deep_river import classification\n>>> from torch import nn\n>>> from torch import optim\n>>> from torch import manual_seed\n\n>>> _ = manual_seed(42)\n\n>>> class MyModule(nn.Module):\n...     def __init__(self, n_features):\n...         super(MyModule, self).__init__()\n...         self.dense0 = nn.Linear(n_features, 5)\n...         self.nonlin = nn.ReLU()\n...         self.dense1 = nn.Linear(5, 2)\n...         self.softmax = nn.Softmax(dim=-1)\n...\n...     def forward(self, X, **kwargs):\n...         X = self.nonlin(self.dense0(X))\n...         X = self.nonlin(self.dense1(X))\n...         X = self.softmax(X)\n...         return X\n\n>>> model_pipeline = compose.Pipeline(\n...     preprocessing.StandardScaler(),\n...     classification.Classifier(module=MyModule, loss_fn='binary_cross_entropy', optimizer_fn='adam')\n... )\n\n>>> dataset = datasets.Phishing()\n>>> metric = metrics.Accuracy()\n\n>>> for x, y in dataset:\n...     y_pred = model_pipeline.predict_one(x)  # make a prediction\n...     metric.update(y, y_pred)  # update the metric\n...     model_pipeline.learn_one(x, y)  # make the model learn\n>>> print(f\"Accuracy: {metric.get():.4f}\")\nAccuracy: 0.7264\n\n```\n### Multi Target Regression \n```python\n>>> from river import evaluate, compose\n>>> from river import metrics\n>>> from river import preprocessing\n>>> from river import stream\n>>> from sklearn import datasets\n>>> from torch import nn\n>>> from deep_river.regression.multioutput import MultiTargetRegressor\n\n>>> class MyModule(nn.Module):\n...     def __init__(self, n_features):\n...         super(MyModule, self).__init__()\n...         self.dense0 = nn.Linear(n_features, 3)\n...\n...     def forward(self, X, **kwargs):\n...         X = self.dense0(X)\n...         return X\n\n>>> dataset = stream.iter_sklearn_dataset(\n...         dataset=datasets.load_linnerud(),\n...         shuffle=True,\n...         seed=42\n...     )\n>>> model = compose.Pipeline(\n...     preprocessing.StandardScaler(),\n...     MultiTargetRegressor(\n...         module=MyModule,\n...         loss_fn='mse',\n...         lr=0.3,\n...         optimizer_fn='sgd',\n...     ))\n>>> metric = metrics.multioutput.MicroAverage(metrics.MAE())\n>>> ev = evaluate.progressive_val_score(dataset, model, metric)\n>>> print(f\"MicroAverage(MAE): {metric.get():.2f}\")\nMicroAverage(MAE): 34.31\n\n```\n\n### Anomaly Detection\n\n```python\n>>> from deep_river.anomaly import Autoencoder\n>>> from river import metrics\n>>> from river.datasets import CreditCard\n>>> from torch import nn\n>>> import math\n>>> from river.compose import Pipeline\n>>> from river.preprocessing import MinMaxScaler\n\n>>> dataset = CreditCard().take(5000)\n>>> metric = metrics.RollingROCAUC(window_size=5000)\n\n>>> class MyAutoEncoder(nn.Module):\n...     def __init__(self, n_features, latent_dim=3):\n...         super(MyAutoEncoder, self).__init__()\n...         self.linear1 = nn.Linear(n_features, latent_dim)\n...         self.nonlin = nn.LeakyReLU()\n...         self.linear2 = nn.Linear(latent_dim, n_features)\n...         self.sigmoid = nn.Sigmoid()\n...\n...     def forward(self, X, **kwargs):\n...         X = self.linear1(X)\n...         X = self.nonlin(X)\n...         X = self.linear2(X)\n...         return self.sigmoid(X)\n\n>>> ae = Autoencoder(module=MyAutoEncoder, lr=0.005)\n>>> scaler = MinMaxScaler()\n>>> model = Pipeline(scaler, ae)\n\n>>> for x, y in dataset:\n...     score = model.score_one(x)\n...     model.learn_one(x=x)\n...     metric.update(y, score)\n...\n>>> print(f\"Rolling ROCAUC: {metric.get():.4f}\")\nRolling ROCAUC: 0.8901\n\n```\n\n## \ud83c\udfeb Affiliations\n\n<p align=\"center\">\n    <img src=\"https://upload.wikimedia.org/wikipedia/de/thumb/4/44/Fzi_logo.svg/1200px-Fzi_logo.svg.png?raw=true\" alt=\"FZI Logo\" height=\"200\"/>\n</p>\n\n<p align=\"center\">\n    <img src=\"https://lieferbotnet.de/wp-content/uploads/2022/09/LieferBotNet-Logo.png?raw=true\" alt=\"Lieferbot net\" height=\"200\"/>\n</p>\n\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "Online Deep Learning for river",
    "version": "0.2.8",
    "project_urls": {
        "Documentation": "https://github.com/online-ml/deep-river",
        "Homepage": "https://github.com/online-ml/deep-river",
        "Repository": "https://github.com/online-ml/deep-river"
    },
    "split_keywords": [
        "online-learning",
        " deep-learning",
        " data-streams"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9bebc51e270293b1d494ff2c860e2c923e62fdf9425f992b8f12717edd774b6c",
                "md5": "6cac11eccc2bafc2e24acfafc69ba262",
                "sha256": "74d3c650aee0de9f82d29f160c9d3cb6ea3984faa087c7dfc17bd1960603595d"
            },
            "downloads": -1,
            "filename": "deep_river-0.2.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6cac11eccc2bafc2e24acfafc69ba262",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.10",
            "size": 43461,
            "upload_time": "2024-12-29T08:07:07",
            "upload_time_iso_8601": "2024-12-29T08:07:07.196749Z",
            "url": "https://files.pythonhosted.org/packages/9b/eb/c51e270293b1d494ff2c860e2c923e62fdf9425f992b8f12717edd774b6c/deep_river-0.2.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "73601c15bbe438aa15604dce46e0e0b180667c8ce132700b270db1de0798eef2",
                "md5": "d4f5a95e7da357518e797e0b96ef7bcd",
                "sha256": "a78a3982f778a7d48bae9d25f4ac08aa176c19ef23cd283802c15ddaf6703ac3"
            },
            "downloads": -1,
            "filename": "deep_river-0.2.8.tar.gz",
            "has_sig": false,
            "md5_digest": "d4f5a95e7da357518e797e0b96ef7bcd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.10",
            "size": 27105,
            "upload_time": "2024-12-29T08:07:09",
            "upload_time_iso_8601": "2024-12-29T08:07:09.493156Z",
            "url": "https://files.pythonhosted.org/packages/73/60/1c15bbe438aa15604dce46e0e0b180667c8ce132700b270db1de0798eef2/deep_river-0.2.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-29 08:07:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "online-ml",
    "github_project": "deep-river",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "deep-river"
}
        
Elapsed time: 0.96847s