头歌实训--机器学习(决策树)
第1关:决策树简述
第2关:决策树算法详解
import numpy as np from sklearn import datasets #######Begin####### # 划分函数 def split(x,y,d,value): index_a=(x[:,d]value) return x[index_a],x[index_b],y[index_a],y[index_b] #######End######### #######Begin####### # 信息熵的计算 from collections import Counter from math import log def entropy(y): length = len(y) counter = {} for item in y: counter[item] = counter.get(item, 0) + 1 res= 0 for _, cnt in counter.items(): p = float(cnt) / length res =np.sum(-p*np.log(p)) return res #######End######### #######Begin####### # 计算最优划分属性和值的函数 def try_spit(x,y): best_entropy=float("inf") best_d,best_v=-1,-1 for d in range(x.shape[1]): sorted_index=np.argsort(x[:,d]) for i in range(1,len(x)): if x[sorted_index[i-1],d] != x[sorted_index[i],d]: v=(x[sorted_index[i-1],d]+x[sorted_index[i],d])/2 x_l,x_r,y_l,y_r=split(x,y,d,v) e=entropy(y_l)+entropy(y_r) if e
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。