美文网首页
决策树_测试和存储

决策树_测试和存储

作者: Yonginggg | 来源:发表于2019-08-03 10:41 被阅读0次

    测试算法:使用决策树执行分类

    依靠训练数据构造了决策树之后,我们可以将它用于实际数据的分类。在执行数据分类时,需要决策树以及用于构造树的标签向量。然后,程序比较测试数据与决策树上的数值,递归执行该过程直到进入叶子节点;最后将测试数据定义为叶子节点所属的类型

    使用决策树的分类函数 (在tree.py的基础上添加)

    在存储带有特征的数据会面临一个问题:程序无 法 确 定特征 在 数 据集中 的 位 置,例 如 前 面例子 的 第 一个用 于 划 分数据 集 的 特征是no surfacing属性,但是在实际数据集中该属性存储在哪个位置?是第一个属性还是第二个属性?

    特征标签列表将帮助程序处理这个问题。使用index方法查找当前列表中第一个匹配firstStr变量的元素 。然后代码递归遍历整棵树,比较testVec变量中的值与树节点的值,如果到达叶子节点,则返回当前节点的分类标签

    # 决策树分类函数  
    def classify(inputTree,featLabels,testVec):  
        # 得到树中的第一个特征  
        firstStr = inputTree.keys()[0]  
        # 得到第一个对应的值  
        secondDict = inputTree[firstStr]  
        # 得到树中第一个特征对应的索引  
        featIndex = featLabels.index(firstStr)  
        # 遍历树  
        for key in secondDict.keys():  
            # 如果在secondDict[key]中找到testVec[featIndex]  
            if testVec[featIndex] == key:  
                # 判断secondDict[key]是否为字典  
                if type(secondDict[key]).__name__ == 'dict':  
                    # 若为字典,递归的寻找testVec  
                    classLabel = classify(secondDict[key], featLabels, testVec)  
                else:  
                    # 若secondDict[key]为标签值,则将secondDict[key]赋给classLabel  
                    classLabel = secondDict[key]  
        # 返回类标签  
        return classLabel  
    

    相关文章

      网友评论

          本文标题:决策树_测试和存储

          本文链接:https://www.haomeiwen.com/subject/ymtjdctx.html