Skip to content

Python-Wrapper for Francesco Parrella's OnlineSVR C++ implementation with scikit-learn-compatible interface.

License

Notifications You must be signed in to change notification settings

SebastianSchmidl/pyonlinesvr

Repository files navigation

PyOnlineSVR

pipeline status coverage report Code style: black release info License: GPL v3 python version 3.7|3.8|3.9|3.10

Python-Wrapper for Francesco Parrella's OnlineSVR [PAR2007] C++ implementation with scikit-learn-compatible interfaces. You can find more information about the OnlineSVR here and the original source code here.

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 and can be installed using pip.

Prerequisites

Steps

You can use pip to install PyOnlineSVR using:

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 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 to generate the C++ wrapper, and the C and C++ compiler toolchains.

conda create -n pyonlinesvr python swig gcc_linux-64 gxx_linux-64
conda activate pyonlinesvr

Install dependencies

conda install -n pyonlinesvr numpy scipy scikit-learn

Get the source code

git clone https://github.com/CodeLionX/pyonlinesvr.git
cd pyonlinesvr

Install PyOnlineSVR

python setup.py install

Note that if your are using Anaconda, you may experience an error caused by the linker:

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.

Usage

>>> 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 file.

References

[PAR2007]: Parrelly, Francesco (2007). "Online Support Vector Machines for Regression." Master thesis. University of Genoa, Italy. PDF