## SOMPY

A Python Library for Self Organizing Map (SOM)

As much as possible, the structure of SOM is similar to `somtoolbox`

in Matlab. It has the following functionalities:

- Only Batch training, which is faster than online training. It has parallel processing option similar to
`sklearn`

format and it speeds up the training procedure, but it depends on the data size and mainly the size of the SOM grid.I couldn't manage the memory problem and therefore, I recommend single core processing at the moment. But nevertheless, the implementation of the algorithm is carefully done for all those important matrix calculations, such as`scipy`

sparse matrix and`numexpr`

for calculation of Euclidean distance. - PCA (or RandomPCA (default)) initialization, using
`sklearn`

or random initialization. - component plane visualization (different modes).
- Hitmap.
- U-Matrix visualization.
- 1-d or 2-d SOM with only rectangular, planar grid. (works well in comparison with hexagonal shape, when I was checking in Matlab with somtoolbox).
- Different methods for function approximation and predictions (mostly using Sklearn).

### Dependencies:

SOMPY has the following dependencies:

- numpy
- scipy
- scikit-learn
- numexpr
- matplotlib
- pandas
- ipdb

### Installation:

`python setup.py install`

Many thanks to @sebastiandev, the library is now standardized in a pythonic tradition. Below you can see some basic examples, showing how to use the library. But I recommend you to go through the codes. There are several functionalities already implemented, but not documented. I would be very happy to add your new examples here.

### Citation

There is no published paper about this library. However if possible, please cite the library as follows:

```
@misc{moosavi2014sompy,
title={SOMPY: A Python Library for Self Organizing Map (SOM)},
author={Moosavi, V and Packmann, S and Vall{\'e}s, I},
note={GitHub.[Online]. Available: https://github. com/sevamoo/SOMPY},
year={2014}
}
```

For more information, you can contact me via [email protected] or [email protected], but please report an issue first.

Thanks a lot. Best Vahid Moosavi