Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancoBobadilla committed Oct 23, 2020
2 parents 0908dcb + 797bae1 commit 26b780c
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# NeuralMap

NeuralMap is a **data analysis** tool to generate a **discrete**, **low-dimensional** representation of the input data
space using the **[Self Organizing Maps algorithm](https://en.wikipedia.org/wiki/Self-organizing_map)**.
NeuralMap is new Python implementation of the well-known self organized artificial neural network, **[Self-Organizing Map (SOM)](https://ieeexplore.ieee.org/document/58325)**, with the **[Relative Position (RP) Visualization method](https://www.sciencedirect.com/science/article/abs/pii/S0010482507000844?via%3Dihub)**. The RP is a node-adaptive attribute that moves in a two dimensional space mimicking, at training stage, the movements of the SOM's codebook vectors in the input space.

In this way **NeuralMap** results in a powerfull **data analysis** tool that generates both a **low-dimensional** representation of the input data as tSNE or UMAP tools and placing codebook vectors in the input space providing a smoother version of the input space. In addition, it maps data similarity into both codebook vectors and RP neighborness, thus allowing clear identification of similarity in the two dimensional space, with the added advantage of precessing new inputs without retraining needs.


This tool supports a **wide range of configurations**:
- Custom **distance metric**
Expand All @@ -14,14 +16,14 @@ After training a **NeuralMap instance**, you will be able to get **useful inform
observations to the SOM, watching the **features distribution** over the map, analysing a dataset to get the
**quantization error**, **activation frequency** and **mean distance** for each node, and **evaluating** the SOM.

Since the use of SOM for **clustering** is very spread, this tool employs some common clustering algorithms:
Since the use of SOM for **clustering** is very spread, NeuralMap also includes several highly customizable **visualization methods**, some of them based on the
**[Relative Positions technique](https://www.researchgate.net/publication/6292810_Improving_cluster_visualization_in_self-organizing_maps_Application_in_gene_expression_data_analysis)** to improve the interpretability of results and clusters recognition.

For instance, we have implemented some common clustering algorithms to search clusters into the SOM configuration, speeding up the search of clusters in the smoothed space representation achieved by the SOM codebook vectors or RP rather than in the, possible, high dimensional imput space:
- [HDBSCAN](https://hdbscan.readthedocs.io/en/latest/index.html)
- [K-means](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html)
- [K-medoids](https://scikit-learn-extra.readthedocs.io/en/latest/generated/sklearn_extra.cluster.KMedoids.html)

And also includes several highly customizable **visualization methods**, some of them based on the
**[Relative Positions technique](https://www.researchgate.net/publication/6292810_Improving_cluster_visualization_in_self-organizing_maps_Application_in_gene_expression_data_analysis)**
to improve the interpretability of results and clusters recognition.

## Installation

Expand Down Expand Up @@ -61,7 +63,7 @@ nm = NeuralMap(5, 'euclidean', columns=10, rows=10)
nm.train(data, n_epochs=20)
```

Now we can obtain a **discrete representation**:
Now we can obtain a **discrete representation** using the HB-SCAN over the codebook vectors and represented in the two dimensional space mapped trhough the Relative Positions:
```python
nm.plot_analysis(data)
```
Expand All @@ -83,6 +85,12 @@ For more details, see the **[NeuralMap documentation]()**.

If you have a **question**, please open an **issue**.

## Authors

* **Elmer Andrés Fernández** - *Original Idea* - [Profile](https://www.researchgate.net/profile/Elmer_Fernandez) - [CIDIE]- [CONICET](http://www.conicet.gov.ar) - [UCC](http://www.ucc.edu.ar)
* **Franco Bobadilla** - *Developer* - Universidad Católica de Córdoba
* **Pablo Pastore** - *Advice* - Universidad Católica de Córdoba

## Contributing

To **contribute**, do the following:
Expand Down

0 comments on commit 26b780c

Please sign in to comment.