https://github.com/sevamoo/SOMPY
A Python Library for Self Organizing Map (SOM)
https://github.com/sevamoo/SOMPY
Last synced: 11 months ago
JSON representation
A Python Library for Self Organizing Map (SOM)
- Host: GitHub
- URL: https://github.com/sevamoo/SOMPY
- Owner: sevamoo
- License: apache-2.0
- Created: 2014-08-24T12:06:09.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2023-04-07T11:23:51.000Z (almost 3 years ago)
- Last Synced: 2024-10-30T04:12:10.701Z (over 1 year ago)
- Language: Jupyter Notebook
- Homepage:
- Size: 9.9 MB
- Stars: 535
- Watchers: 33
- Forks: 242
- Open Issues: 48
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-machine-learning - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
- awesome-machine-learning - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
- awesome-machine-learning - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
- fucking-awesome-machine-learning - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
- awesome-machine-learning - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
- awesome-machine-learning - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
- awesome-machine-learning - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
- awesome-advanced-metering-infrastructure - SOMPY - Self Organizing Map written in Python (Uses neural networks for data analysis). (Python / General-Purpose Machine Learning)
README
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:
1. 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.
2. PCA (or RandomPCA (default)) initialization, using `sklearn` or random initialization.
3. component plane visualization (different modes).
4. Hitmap.
5. U-Matrix visualization.
6. 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).
7. 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
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.
[Basic Example](https://gist.github.com/sevamoo/035c56e7428318dd3065013625f12a11)
### 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 sevamoo@gmail.com but please report an issue first.
Thanks a lot.
Best Vahid Moosavi