def test_id3_build_tree_weekends(self): dataset = load(self.relative_to_base("/datasets/weekends.data")) tree = id3.build_tree(dataset) assert_that(tree, equals_tree( {"weather": { "sunny": { "parents": { "yes": "cinema", "no": "tennis" } }, "windy": { "parents": { "yes": "cinema", "no": { "money": { "rich": "shopping", "poor": "cinema" } } } }, "rainy": { "money": { "poor": "cinema", "rich": "stay in" } } }} ) )
def test_id3_build_tree_weekends(self): dataset = load(self.relative_to_base("/datasets/weekends.data")) tree = id3.build_tree(dataset) assert_that( tree, equals_tree({ "weather": { "sunny": { "parents": { "yes": "cinema", "no": "tennis" } }, "windy": { "parents": { "yes": "cinema", "no": { "money": { "rich": "shopping", "poor": "cinema" } } } }, "rainy": { "money": { "poor": "cinema", "rich": "stay in" } } } }))
def __init__(self, training_set): """ Constructs a new decision tree. Args: training_set: model.DataSet The training data to use when building the decision tree. """ self.training_set = training_set self._tree = id3.build_tree(training_set) self._plotter = MatplotlibAnnotationTreePlotter(self._tree)
def test_id3_build_tree_marine_animals(self): dataset = load(self.relative_to_base("/datasets/marine_animal.data")) tree = id3.build_tree(dataset) assert_that( tree, equals_tree({ "no_surfacing": { "no": "no", "yes": { "has_flippers": { "no": "no", "yes": "yes" } } } }))
def test_id3_build_tree_marine_animals(self): dataset = load(self.relative_to_base("/datasets/marine_animal.data")) tree = id3.build_tree(dataset) assert_that(tree, equals_tree( {"no_surfacing": { "no": "no", "yes": { "has_flippers": { "no": "no", "yes": "yes" } } } } ) )
def test_id3_build_tree_play_tennis(self): dataset = load(self.relative_to_base("/datasets/play_tennis.data"), delimiter=" ") tree = id3.build_tree(dataset) assert_that( tree, equals_tree({ "Outlook": { "Sunny": { "Humidity": { "High": "No", "Normal": "Yes" } }, "Overcast": "Yes", "Rain": { "Wind": { "Strong": "No", "Weak": "Yes" } } } }))
def test_id3_build_tree_play_tennis(self): dataset = load(self.relative_to_base("/datasets/play_tennis.data"), delimiter=" ") tree = id3.build_tree(dataset) assert_that(tree, equals_tree( {"Outlook": { "Sunny": { "Humidity": { "High": "No", "Normal": "Yes" } }, "Overcast": "Yes", "Rain": { "Wind": { "Strong": "No", "Weak": "Yes" } } }} ) )
else: ret += bprint_aux(child_node, index + 2) return ret import pandas as pd has_ids = True has_header = True has_labels = True delimiter = "," header = 0 if has_header else None id_col = 0 if has_ids else None # dataframe = pd.read_csv("./test/datasets/play_tennis.data", index_col=id_col, header=header,delimiter=delimiter) dataframe = pd.read_csv("hope.csv", index_col=id_col, header=header, delimiter=delimiter) labels = dataframe.pop(dataframe.columns[-1]) if has_labels else None dataset = model.DataSet(dataframe, labels=labels) tree = id3.build_tree(dataset) printbonito = bprint(tree) print(printbonito) txt = open("output.txt", mode="w", encoding="UTF-8") txt.write(printbonito) txt.close() tp = MatplotlibAnnotationTreePlotter(tree) tp.plot()