1 importnumpy as np2 from numpy importarray3 classdecisionnode:4 def __init__(self,value=None,col=None,rb=None,lb=None):5 self.value=value6 self.col=col7 self.rb=rb8 self.lb=lb9
10 #读取数据并将数据转换为矩阵形式
11 defreaddata(filename):12 data=open(filename).readlines()13 x=[]14 for line indata:15 line=line.strip().split('\t')16 x_i=[]17 for num inline:18 num=float(num)19 x_i.append(num)20 x.append(x_i)21 x=array(x)22 returnx23
24 #求序列的中值
25 defmedian(x):26 n=len(x)27 x=list(x)28 x_order=sorted(x)29 return x_order[n//2],x.index(x_order[n//2])30
31 #以j列的中值划分数据,左小右大,j=节点深度%列数
32 def buildtree(x,j=0):33 rb=[]34 lb=[]35 m,n=x.shape36 if m==0: returnNone37 edge,row=median(x[:,j].copy())38 for i inrange(m):39 if x[i][j]>edge:40 rb.append(i)41 if x[i][j]