Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/codelionx/pyonlinesvr
Python-Wrapper for Francesco Parrella's OnlineSVR C++ implementation with scikit-learn-compatible interface.
https://github.com/codelionx/pyonlinesvr
cpp machine-learning numpy online onlinesvr python python3 scikit-learn streaming-algorithms svr
Last synced: 3 months ago
JSON representation
Python-Wrapper for Francesco Parrella's OnlineSVR C++ implementation with scikit-learn-compatible interface.
- Host: GitHub
- URL: https://github.com/codelionx/pyonlinesvr
- Owner: CodeLionX
- License: gpl-3.0
- Created: 2021-06-22T08:57:29.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-06T19:21:47.000Z (4 months ago)
- Last Synced: 2024-09-28T13:23:11.135Z (3 months ago)
- Topics: cpp, machine-learning, numpy, online, onlinesvr, python, python3, scikit-learn, streaming-algorithms, svr
- Language: C++
- Homepage:
- Size: 206 KB
- Stars: 6
- Watchers: 5
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# PyOnlineSVR
[![pipeline status](https://github.com/CodeLionX/pyonlinesvr/actions/workflows/conda-python-test.yml/badge.svg)](https://github.com/CodeLionX/pyonlinesvr/actions/workflows/conda-python-test.yml)
![coverage report](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/CodeLionX/6762bee806477c52e079f21d2f252688/raw/pyonlinesvr__heads_main.json)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![release info](https://img.shields.io/badge/Release-0.0.3-blue)](https://pypi.org/project/PyOnlineSVR/0.0.3/)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
![python version 3.7|3.8|3.9|3.10](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9%20%7C%203.10-blue)Python-Wrapper for Francesco Parrella's OnlineSVR [[PAR2007]](#PAR2007) C++ implementation with [scikit-learn](https://sklearn.org/)-compatible interfaces.
You can find more information about the OnlineSVR [here](http://onlinesvr.altervista.org/) and the original source code [here](https://github.com/fp2556/onlinesvr/tree/master/c%2B%2B).## Installation
### Dependencies
PyOnlineSVR requires the following dependencies:
- python (>=3.7)
- numpy (>=1.13.3)
- scipy (>=0.19.1)
- joblib (>=0.11)
- scikit-learn (>=0.23.0)### Binaries
PyOnlineSVR is published to [PyPi](https://pypi.org/project/PyOnlineSVR/) and can be installed using `pip`.
#### Prerequisites
- python (>=3.7)
- pip (>=19.0 to support [manylinux2010](https://github.com/pypa/manylinux))#### Steps
You can use `pip` to install PyOnlineSVR using:
```sh
pip install PyOnlineSVR
```### From Source (Linux)
If you are installing PyOnlineSVR from source, you will need Python 3.7 or later and a modern C++ compiler.
We highly recommend using an [Anaconda](https://www.anaconda.com/products/individual#download-section) environment for building this project.In the following, we explain the steps to build PyOnlineSVR using **Anaconda** and **git**.
#### Prepare environment
Create a new Anaconda environment and install the required dependencies.
This includes python, [SWIG](http://swig.org/) to generate the C++ wrapper, and the C and C++ compiler toolchains.```bash
conda create -n pyonlinesvr python swig gcc_linux-64 gxx_linux-64
conda activate pyonlinesvr
```#### Install dependencies
```bash
conda install -n pyonlinesvr numpy scipy scikit-learn
```#### Get the source code
```bash
git clone https://github.com/CodeLionX/pyonlinesvr.git
cd pyonlinesvr
```#### Install PyOnlineSVR
```bash
python setup.py install
```Note that if your are using Anaconda, you may experience an error caused by the linker:
```txt
build/temp.linux-x86_64-3.7/torch/csrc/stub.o: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status
error: command 'g++' failed with exit status 1
```This is caused by the linker `ld` from the Conda environment shadowing the system `ld`.
You should use a newer version of Python in your environment that fixes this issue.
The recommended Python versions are (3.6.10+,) 3.7.6+ and 3.8.1+.
For further details see [the issue](https://github.com/ContinuumIO/anaconda-issues/issues/11152).## Usage
```python
>>> import numpy as np
>>> from pyonlinesvr import OnlineSVR
>>> X = np.array([[0, 0], [2, 2]])
>>> y = np.array([0.5, 2.5])
>>> regr = OnlineSVR()
>>> regr.fit(X[:1], y[:1])
OnlineSVR()
>>> regr.predict([[1, 1]])
array([ 0.4])
>>> regr.partial_fit(X[1:], y[1:])
OnlineSVR()
>>> regr.predict([[1, 1]])
array([ 1.5])
```## License
PyOnlineSVR is free software under the terms of the GNU General Public License, as found in the [LICENSE](./LICENSE) file.
## References
[PAR2007]: Parrelly, Francesco (2007). "Online Support Vector Machines for Regression." Master thesis. University of Genoa, Italy. [PDF](http://onlinesvr.altervista.org/Research/Online%20Support%20Vector%20Regression%20(Parrella%20F.)%20[2007].pdf)