def test_attribute_infogain(self):
     dict_list = excel_to_dictionary('Commute.xlsx')
     out = attribute_infogain(dict_list, 'Commute')
     result = {
         'Accident': 6.454231881430971,
         'Hour': 9.989838434720816,
         'Stall': 3.23495093255735,
         'Weather': 1.6993443792675045,
     }
     self.assertEquals(out, result)
 def test_attribute_infogain(self):
     dict_list = excel_to_dictionary('Commute.xlsx')
     out = attribute_infogain(dict_list, 'Commute')
     result = {
         'Accident': 6.454231881430971,
         'Hour': 9.989838434720816,
         'Stall': 3.23495093255735,
         'Weather': 1.6993443792675045,
         }
     self.assertEquals(out, result)
def try_naive_bayes(filename, target_attribute, case):
    data = excel_to_dictionary(filename)
    model = Naive_Bayes(data, target_attribute)
    values = set(d[target_attribute] for d in data)
    likelihoods = defaultdict(list)
    for v in values:
        likelihood = 1
        for attr in case:
            likelihood *= model[(attr, case[attr], v)]
        likelihoods[v] = likelihood
    result = max(likelihoods.items(), key=lambda x: likelihoods[x[0]])
    return (result[0], result[1] / float(sum(likelihoods.values())) * 100)
def try_naive_bayes(filename,target_attribute,case):
    data = excel_to_dictionary(filename)
    model = Naive_Bayes(data,target_attribute)
    values = set(d[target_attribute] for d in data)
    likelihoods = defaultdict(list)
    for v in values:
        likelihood = 1
        for attr in case:
            likelihood *= model[(attr,case[attr],v)]
        likelihoods[v] =likelihood
    result = max(likelihoods.items(),key = lambda x : likelihoods[x[0]])
    return (result[0],result[1]/float(sum(likelihoods.values()))*100)
def decision_tree(filename, target_attribute):
    data = excel_to_dictionary(filename)
    attributes = data[0].keys()
    attributes.remove(target_attribute)
    return decision_tree_helper(data, target_attribute, attributes)
def decision_tree(filename, target_attribute):
    data = excel_to_dictionary(filename)
    attributes = data[0].keys()
    attributes.remove(target_attribute)
    return decision_tree_helper(data, target_attribute, attributes)