A C++ library for Matrix-Induced Multiple Kernel Learning (MIMKL) with python bindings. The library implements unsupervised and supervised multiple kernel learning algorithms and the most common kernel functions as well as matrix-inducing versions thereof. The python wrapper exposes classes with interfaces that allow a seamless integration with scikit-learn.
The implementation has been used to generate all the results for the paper "Pathway-Induced Multiple Kernel Learning".
- C++14 capable C++ compiler
- cmake (>3.0.2)
- Python
pymimkl is the python package for matrix induced multiple kernel learning. It uses bindings from compiled mimkl (C++) (see Building) and provides scikit-learn like classifiers.
Install directly from git. This builds the mimkl project and the pymimkl bindings and might take some time.
pip install git+ssh://git@github.com/IBM/mimkl.gitOptimize the build by passing additional C++ flags. For example to enable parallelism (compiler must support OpenMP):
MIMKL_CXX_FLAGS="-fopenmp" pip install git+ssh://git@github.com/IBM/mimkl.gitEnable architecture optimizations (i386):
MIMKL_CXX_FLAGS="-march=native" pip install git+ssh://git@github.com/IBM/mimkl.gitEnable both:
MIMKL_CXX_FLAGS="-march=native -fopenmp" pip install git+ssh://git@github.com/IBM/mimkl.gitPull the image from DockerHub:
docker pull tsenit/mimklOr directly build it from source:
docker-compose -f docker/docker-compose.yml build
Run the container:
docker run -it tsenit/mimkl /bin/bash
Clone the repository:
git clone https://github.com/IBM/mimklIntialize and update the submodules
cd mimkl
git submodule init
git submodule updateInstall pymimkl with pip.
pip install .
# to persist the created build_ folder for faster rebuilding and C++ testing:
# pip install -e .Same as before to optimize the build.
MIMKL_CXX_FLAGS="-march=native -fopenmp" pip install .run tests with
python setup.py testClone the repository:
git clone https://github.com/IBM/mimklIntialize and update the submodules
cd mimkl
git submodule init
git submodule updateCreate a build folder (in source build):
mkdir build
cd buildGenerate the building files:
cmake ..
# unfortuantely, cmake is not aware of virtual environments. The fix is
# cmake -DPYTHON_EXECUTABLE=$(command -v python) ..
# https://github.com/pybind/pybind11/issues/99Compile the code:
makeTest it:
make test
# make test CTEST_OUTPUT_ON_FAILURE=TRUETake note that the python tests have additional requirements (e.g. scipy).
EasyMKL: a scalable multiple kernel learning algorithm
Unsupervised multiple kernel learning for heterogeneous data integration ("UMKLKNN" im mimkl)
eigen http://eigen.tuxfamily.org/index.php?title=Main_Page
dlib http://dlib.net
pybind11 https://github.com/pybind/pybind11
PIMKL: Pathway-Induced Multiple Kernel Learning https://rdcu.be/bBN6U
for which mimkl was developed.