#add the attributes
mySet.addDefinition(att1)  # wifi
mySet.addDefinition(att2)  # time
mySet.addDefinition(att3)  # location
parameters = [att1, att2, att3]

#add 10 random attributes
random_factory = RandomAttributeFactory(1000)
for idx in range(1, 10):
    rndatt = random_factory.getNext()
    parameters.append(rndatt)
    mySet.addDefinition(rndatt)
    
#select classifier
learner = RulesLearner('tree_learner', mySet, 'on')
learner.setTemplateRuleLearnerName("[WiFi] <= When [Location] ")
learner.setFieldNames(map(str, parameters))

print map(str, parameters)

# [on] <= When [morning, home] 
for a in range(1,300):
    learner.addSample(['on', 'morning', 'home'] + map( lambda x: x.sample(), parameters[3:]), parameters)

# [off] <= When [morning, work] 
for a in range(1,200):
    learner.addSample(['off', 'morning', 'work'] + map( lambda x: x.sample(), parameters[3:]), parameters)

# [on] <= When [afternoon, work] 
for a in range(1,200):
#declare attributes
att = Attribute("WiFi")
att.add("off", "on")

att2 = Attribute("time")
att2.add("morning", "afternoon", "evening", "night")

att3 = Attribute("location")
att3.add("home", "work", "other")

#add the attributes
mySet.addDefinition(att)   # wifi
mySet.addDefinition(att3)  # location

#select classifier
learner = RulesLearner('full_likelihood', mySet)
learner.setTemplateRuleLearnerName("[WiFi] <= When [Location] ")

#not necessary as learner already has the set
#rule.learner = FullLikelihood(mySet)

print("Action " + learner.getAction())

parameters = [att.getName(), att3.getName()]

learner.setFieldNames(parameters)

learner.setTreshold(0.7)
learner.setMinSamples(2)

#add "on" <- "home", 4 times