前言
本文内容参考了周志华老师的《机器学习》,《机器学习实战》,和李航老师的《统计学习方法》
决策树简介
决策树是一种很常见的机器学习方法
例如判断一个西瓜是好瓜还是坏瓜?
决策树代码实现(python)
下面我们来看如何用代码来实现
首先我们先来编写计算香农熵的代码
from math import log
def calc_shannong_ent(data_set):
//计算一共有多少条数据
data_size = len(data_set)
//统计所有的结果
data_labels=[example[-1] for example in data_set]
labels_num ={}
for i in data_labels:
labels_num[i] = labels_num.get(i, 0) + 1
shannong_ent = 0
//计算香农熵
for key in labels_num:
prob = labels_num[key] / data_size
shannong_ent = shannong_ent - prob * log(prob, 2)
return shannong_ent
我们验证这个函数
print(calc_shannong_ent([[1,1,"yes"],[1,1,"yes"],[1,0,"no"],[0,1,"no"],[0,1,'no']]))
输出结果为
0.970950594454668
然后编写划分数据集的代码
def splite(data_set, axis, value):
rem_data_set=[]
for line_data in data_set:
if line_data[axis] == value:
data = line_data[:axis]
data.extend(line_data[axis+1:])
rem_data_set.append(data)
return rem_data_set