Decision Tree
This commit is contained in:
parent
f9fd2a042a
commit
31105416bd
1 changed files with 66 additions and 0 deletions
66
decisiontree.py
Normal file
66
decisiontree.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
class Node(object):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def menu(prompt, decisions):
|
||||||
|
print("> %s" % prompt)
|
||||||
|
for i,decision in enumerate(decisions):
|
||||||
|
print("%d. %s" % (i,decision))
|
||||||
|
answer = int(input("Answer: "))
|
||||||
|
return answer
|
||||||
|
|
||||||
|
class DecisionNode(Node):
|
||||||
|
def __init__(self, question):
|
||||||
|
self.question = question
|
||||||
|
self.decisions = []
|
||||||
|
|
||||||
|
def addDecision(self, response, node):
|
||||||
|
self.decisions.append( (response,node) )
|
||||||
|
|
||||||
|
def display(self):
|
||||||
|
i = menu(self.question, [ d[0] for d in self.decisions ])
|
||||||
|
return self.decisions[i][1]
|
||||||
|
|
||||||
|
class AnswerNode(Node):
|
||||||
|
def __init__(self, answer):
|
||||||
|
self.answer = answer
|
||||||
|
|
||||||
|
def display(self):
|
||||||
|
print(self.answer)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
high = AnswerNode("hohes Risiko")
|
||||||
|
medium = AnswerNode("mittleres Risiko")
|
||||||
|
low = AnswerNode("niedriges Risiko")
|
||||||
|
|
||||||
|
n6 = DecisionNode("Einkommen?")
|
||||||
|
n6.addDecision("0 Eur bis 15 Tsd Eur", high)
|
||||||
|
n6.addDecision("15 Tsd Eur bis 35 Tsd Eur", medium)
|
||||||
|
n6.addDecision("ueber 35 Tsd Eur", low)
|
||||||
|
|
||||||
|
n4 = DecisionNode("Sicherheiten?")
|
||||||
|
n4.addDecision("keine", n6)
|
||||||
|
n4.addDecision("angemessen", low)
|
||||||
|
|
||||||
|
n3 = DecisionNode("Verschuldung?")
|
||||||
|
n3.addDecision("hoch", n4)
|
||||||
|
n3.addDecision("niedrig", low)
|
||||||
|
|
||||||
|
n2 = DecisionNode("Sicherheiten?")
|
||||||
|
n2.addDecision("keine", high)
|
||||||
|
n2.addDecision("angemessen", medium)
|
||||||
|
|
||||||
|
n1 = DecisionNode("Verschuldung?")
|
||||||
|
n1.addDecision("hoch", high)
|
||||||
|
n1.addDecision("niedrig", n4)
|
||||||
|
|
||||||
|
n0 = DecisionNode("Kreditwuerdigkeit?")
|
||||||
|
n0.addDecision("unbekannt",n1)
|
||||||
|
n0.addDecision("schlecht",n2)
|
||||||
|
n0.addDecision("gut",n3)
|
||||||
|
|
||||||
|
node = n0
|
||||||
|
|
||||||
|
while node is not None:
|
||||||
|
node = node.display()
|
Loading…
Reference in a new issue