Python, C++ data mining library

View project on GitHub


pyclustering is an open source Python, C++ data-mining library under General Public License 3. The library provides tools for cluster analysis, data visualization and contains oscillatory network models.

pyclustering provides Python and C++ implementation almost for each algorithm, method, etc. C++ implementation is used by default to increase performance if it is supported by target platform (Windows 32, 64 bits, Linux 32, 64 bits, MacOS 64 bites) otherwise Python implementation is used.

C++ part of the pyclustering library so-called ‘ccore’ is independent from python and does not uses any other third-party libraries to increase compatibility and portability. The C++ part is implemented using pure C++14 and can be easily embedded into your own project using source code or as a shared library.


Installation using pip3 tool:

$ pip3 install pyclustering

Latest News

April 2019. pyclustering 0.9.0 is available for download. [Changes] [Download] [Documentation].

April 2019. Article “PyClustering: Data Mining Library” is published in The Journal of Open Source Software [Download].

November 2018. pyclustering 0.8.2 is available for download. [Changes] [Download] [Documentation].

May 2018. pyclustering 0.8.1 is available for download. [Changes] [Download].

February 2018. pyclustering 0.8.0 is available for download. [Changes] [Download].

October 2017. pyclustering 0.7.2 is available for download. [Changes] [Download].

October 2016. pyclustering 0.6.6 is available for download. [Changes] [Download].

Support or Contact

In case of any questions, proposals or bugs related to the pyclustering please contact to or create an issue here.

Cite the Library

If you are using pyclustering library in a scientific paper, please, cite the library.

Novikov, A., 2019. PyClustering: Data Mining Library. Journal of Open Source Software, 4(36), p.1230. Available at:

BibTeX entry:

    doi         = {10.21105/joss.01230},
    url         = {},
    year        = 2019,
    month       = {apr},
    publisher   = {The Open Journal},
    volume      = {4},
    number      = {36},
    pages       = {1230},
    author      = {Andrei Novikov},
    title       = {PyClustering: Data Mining Library},
    journal     = {Journal of Open Source Software}