繁体   English   中英

决策树的简单递归[Python]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM