UserPreferences

SOMExampleProgram


  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 

import pyrobot.brain.psom as psom
from pyrobot.brain.psom import vis

MALE, FEMALE, SWAT, BMC, YES, NO = 0,1,0,1,1,0
ECON, CS, BIO, PSYCH, PHIL, WRITER, GENDER = .10, .25, .40, .55, .70, .85, 1.0

people =[
    {"name":"lisa", "sex":FEMALE, "school":SWAT, "glasses":NO, "field":CS},
    {"name":"doug", "sex":MALE, "school":BMC, "glasses":NO, "field":CS},
    {"name":"wil", "sex":MALE, "school":BMC, "glasses":NO, "field":BIO},
    {"name":"paul", "sex":MALE, "school":BMC, "glasses":YES, "field":BIO},
    {"name":"anne", "sex":FEMALE, "school":BMC, "glasses":YES, "field":GENDER},
    {"name":"karen", "sex":FEMALE, "school":BMC, "glasses":YES, "field":BIO},
    {"name":"ted", "sex":MALE, "school":BMC, "glasses":YES, "field":BIO},
    {"name":"rebekah", "sex":FEMALE, "school":BMC, "glasses":NO, "field":CS},
    {"name":"mark", "sex":MALE, "school":SWAT, "glasses":YES, "field":ECON},
    {"name":"geoff", "sex":MALE, "school":BMC, "glasses":YES, "field":CS},
    {"name":"deepak", "sex":MALE, "school":BMC, "glasses":NO, "field":CS},
    {"name":"rich", "sex":MALE, "school":SWAT, "glasses":YES, "field":CS},
    {"name":"alan", "sex":MALE, "school":SWAT, "glasses":YES, "field":PHIL},
    {"name":"jan", "sex":FEMALE, "school":BMC, "glasses":YES, "field":WRITER},
    {"name":"rob", "sex":MALE, "school":BMC, "glasses":YES, "field":PSYCH}
    ]

COLS = 4
ROWS = 3
MAXVALUE = 1

dataset = []
for person in people:
    dataset.append( (person["name"], person["sex"], person["school"],
                     person["glasses"], person["field"]) )

mysom = vis.VisPsom(COLS, ROWS, dim=4,
                    vis_vectortype = 'Hinton',
                    opts=(MAXVALUE,))
mysom.init_training(0.02, 3, 100)

# train:
for i in range(30):
    for vector in dataset:
        name, data = vector[0], vector[1:]
        model = mysom.train( psom.vector(data) )

# add labels:
for vector in dataset:
    name, data = vector[0], vector[1:]
    model = mysom.map( psom.vector(data) )
    x, y = model.point.x, model.point.y
    mysom.add_label(x, y, label="\n" + name)

mysom.win.mainloop()