def RecursionTree(self, node, x, x_rows, y):
#????
if len(x_rows) <= 0:
return
#????
if node.HasChildren() == False:
y[x_rows] = node.GetLabel()
# logger.debug('predict ????:%d,x_rows:%s', node.GetLabel(),x_rows)
return
feature = node.GetSplitAttr()
rest_x_row = np.array(x_rows, dtype = np.int)
for (value, child) in node.GetChildren():
new_x_row = np.intersect1d(x_rows, np.where(x[:,feature] == value)[0])
rest_x_row = arraysetops.setxor1d(rest_x_row, new_x_row, True)
self.RecursionTree(child, x, new_x_row, y)
#???????????????????????
y[rest_x_row] = self.Classify(y, x_rows)
评论列表
文章目录