Skip to content

Simple implementation of the "growing neural gas" artificial neural network

License

Notifications You must be signed in to change notification settings

AdrienGuille/GrowingNeuralGas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GrowingNeuralGas

About

A simple implementation of the Growing Neural Gas algorithm, based on:

A Growing Neural Gas Network Learns Topologies, B. Fritzke
Advances in Neural Information Processing Systems 7 (1995)`

Usage

Instantiate a GNG object with some data, then fit the neural network:

gng = GrowingNeuralGas(data)
gng.fit_network(e_b=0.1, e_n=0.006, a_max=10, l=200, a=0.5, d=0.995, passes=8, plot_evolution=True)

Example

This example shows (i) how to generate toy data (two interleaving half circles) using the scikit-learn lib and (ii) how to perform cluster analysis through the growing neural gas network:

from gng import GrowingNeuralGas
from sklearn import datasets
from sklearn.preprocessing import StandardScaler

print('Generating data...')
data = datasets.make_moons(n_samples=2000, noise=.05) 
data = StandardScaler().fit_transform(data[0])
print('Done.')
print('Fitting neural network...')
gng = GrowingNeuralGas(data)
gng.fit_network(e_b=0.1, e_n=0.006, a_max=10, l=200, a=0.5, d=0.995, passes=8, plot_evolution=True)
print('Found %d clusters.' % gng.number_of_clusters())
gng.plot_clusters(gng.cluster_data())

Running example.py will produce the following output:

Preparing data...
Done.
Fitting neural network...
   Pass #1
   Pass #2
   Pass #3
   Pass #4
   Pass #5
   Pass #6
   Pass #7
   Pass #8
Found 2 clusters.

Clusters

alt tag

Network properties

alt tag

Global error vs. number of passes

alt tag

Accumulated local error vs. total number of iterations

alt tag

About

Simple implementation of the "growing neural gas" artificial neural network

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages