训练中决策树的精度度量

2024-04-25 20:44:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用一个ID3算法用python实现一个决策树,我想知道如何在预先定义的节点数中训练树时测量精度(明确地说:每10个节点插入树中,我就可以测量精度,这样我就可以在训练时建立一个显示精度变化的图表),但是我使用递归方法来做,我不能使用节点计数器进行度量,因为子树节点在方法中作为参数传递,这将使我得到子树的精度。我有点没主意了。 感谢关注

下面是该方法的代码(我试图翻译代码,所以可能会有错误)

def decisionTree(Data, Target, Atribute,default):
Root = Node()
index = calc.getindexAttribute(Data,Target)
bigger = ">50K"
smaller = "<=50K"
ibigger = 0
ismaller = 0
a = ""
for i in range (1,len(Data)-1):
    if ibigger > 0 and ismaller > 0:
        break
    elif Data[i][index] == bigger:
        ibigger = ibigger + 1
    elif Data[i][index] == smaller:
        ismaller = ismaller + 1
if ismaller == len(Data) -1 :
    return smaller
elif ibigger == len(Data) -1:
    return bigger
if len(Atribute) == 1:
    return mostCommonValue(Data,Target,Atribute)
else:
    a = BestAttribute(Data,Atribute)
    Root.attribute = a
    Root.mostCommonClass = mostCommonValue(Data,Target, Atribute)
    childs = {}
    Values_A = calc.getAtributeValues(Data,a)
    for y in range (0,len(Valores_A)):
        SubData=[]
        SubData = calc.makeSubData(Data,a,Valores_A[y])
        if len(SubData) == 1:
            return Root
        else:
            childs[Valores_A[y]] = decisionTree(SubData,Target,Delete_matrix(Atribute,a),Root)
            Root.childs = childs
return Root

Tags: 方法targetdataindexlenreturnif节点