Competing layer (newc)ΒΆ

Use neurolab.net.newc()

import neurolab as nl
import numpy as np
import numpy.random as rand

# Create train samples
centr = np.array([[0.2, 0.2], [0.4, 0.4], [0.7, 0.3], [0.2, 0.5]])
rand_norm = 0.05 * rand.randn(100, 4, 2)

inp = np.array([centr + r for r in rand_norm]).reshape(100*4, 2)
rand.shuffle(inp)

# Create net with 2 inputs and 4 neurons
net = nl.net.newc([[0.0, 1.0],[0.0, 1.0]], 4)
# train with rule: Conscience Winner Take All algoritm (CWTA)
error = net.train(inp, epochs=200, show=20)

# Plot results:
import pylab as pl
pl.title('Classification Problem')
pl.subplot(211)
pl.plot(error)
pl.xlabel('Epoch number')
pl.ylabel('error (default MAE)')

w = net.layers[0].np['w']

pl.subplot(212)
pl.plot(inp[:,0], inp[:,1], '.', \
                centr[:,0], centr[:, 1] , 'yv', \
                w[:,0], w[:,1], 'p')
pl.legend(['train samples', 'real centers', 'train centers'])
pl.show()
Result:_images/classifer5.png

Previous topic

Feed Forward Multilayer Perceptron (newff)

Next topic

Single Layer Perceptron (newp)

This Page