我正在用一个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
目前没有回答
相关问题 更多 >
编程相关推荐