[英]Simple recursion of decision tree [Python]
我正在学习递归,我有以下树:
# cough
# Yes / \ No
# fever healthy
# Yes / \ No
# influenza cold
使用以下代码:
def diagnose_helper(symptoms, node, symptoms_checked):
if node.positive_child == None and node.negative_child == None:
print(node.data, "In")
return node.data
for symp in symptoms:
if symp == node.data and symp not in symptoms_checked:
symptoms_checked.append(symp)
return diagnose_helper(symptoms, node.positive_child,
symptoms_checked)
else:
return diagnose_helper(symptoms, node.negative_child,
symptoms_checked)
检查症状是否在列表中,并返回当前情况。 即对于这个输入:
diagnose_helper(["cough, fever"], root, [])
它应该返回“流感”,因为咳嗽 -> 是和发烧 -> 是,但它实际上返回的是感冒。 我似乎无法找到原因,如果有人有任何想法,我会接受。
您的函数将仅检查症状中的第一个元素,因为您在 if 语句的两个分支中都有返回值。 也许试试这样:
def diagnose_helper(symptoms, node):
if node.positive_child == None and node.negative_child == None:
print(node.data, "In")
return node.data
if node.data in symptoms:
return diagnose_helper(symptoms, node.positive_child)
else:
return diagnose_helper(symptoms, node.negative_child)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.