This is an implementation of the algorithm listed in the paper "A self-organising network that grows when required" [1]. This algorithm can be used for clustering tasks, vector quantization tasks and dimensionality reduction tasks. See Self-Organising Maps [2].
There is a Jupyter-Notebook included which shows the comparison of this algorithms with other well-known clustering algorithms (using the examples from sklearn), and network visualisations (using networkx)
[1]Marsland, Stephen, Jonathan Shapiro, and Ulrich Nehmzow. "A self-organising network that grows when required." Neural networks 15.8-9 (2002): 1041-1058.
[2] Map, Self-Organizing, and Teuvo Kohonen. "Self-organizing map." Proceedings of the IEEE 78 (1990): 1464-1480.