The Kernel-Machine Library is a freely available (released under the GPL) C++ library to promote the use and progress of kernel machines. It is both for academic use and for developing real world applications.

The Kernel-Machine Library draws heavily from features of modern C++ such as template meta-programming to achieve high performance while at the same time offering a comfortable interface.

It enables compile-time selection of specialised algorithms on the basis of data types: for example, the specific case of a SVM in combination with a linear kernel can be computed by a specialised efficient algorithm.

The Kernel-Machine Library has implementations for the following kernel machines and their cited algorithms:

Up till now, the focus has been on regression. The handling of classification and ranking problems is being added.

Requirements:
Besides a few small bugs and quirks, the library has been successfully tested on GNU/Linux, Windows 2000 and Windows XP.

You will need a reasonably standards-compliant compiler such as GCC or MS VC++ (7.1 or higher). The Kernel-Machine Library builds on top of the libraries below.

Boost. Functionality of several Boost libraries is in use throughout the Kernel-Machine Library. Boost provides an excellent set of C++ libraries which reduces the amount of code and boosts the quality of the overall implementation.

The Kernel-Machine Library is built and tested against version 1.32.0.

Boost Numeric Bindings. A part of Boost’s sandbox CVS repository is required, namely the numeric bindings.

This is a software package that combines the flexibility of the C++ data types (such as that of std::vector< > or ublas::matrix< >) with the computational efficiency of a BLAS and LAPACK.

ATLAS. This is a very efficient basic linear algebra system (BLAS) [8], located at Sourceforge.

ATLAS can empirically finetune its code to make optimal use of your CPU including its extensions such as SSE, 3DNow! and AltiVec. It also contains several LAPACK routines.