コード例 #1
0
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)