def Main(plan, names, sigma, sigmaDecay, alphaDecay): #samples, names = TestSamples() samples = SOMUtils.ExtractSOMSamples(plan, names) print "%d samples extracted" % len(samples), names scales, mins = ComputeScales(samples) dims = len(samples[0][1]) # Neighborhood distance function. distFunc = lambda dsq: m.exp(-0.5 * dsq / (sigma * sigma)) #som = SOM(CartesianGrid((20, 20)), dims, scales, distFunc) som = SOM(HexagonalGrid((20, 20)), dims, scales, distFunc) # Train the SOM. alpha = 1.0 for i in range(100): if (i + 1) % 10 == 0: print "Iteration ", i + 1, "alpha = ", alpha, "sigma = ", sigma for id, sample in samples: som.Train(sample, alpha) alpha = alpha * alphaDecay sigma = sigma * sigmaDecay som.DistFunc = lambda dsq: m.exp(-0.5 * dsq / (sigma * sigma)) SOMUtils.ExportSOM(open("OUT.som", "w"), som, names, samples)