花了一天多时间,终于弄明白了决策树的完整代码,整个构树过程明白了。感觉蛮开心,爽歪歪。
下面写一下我的学习步骤,我们可以一起来~~
我尽量写明白每一步我的学习路径,用了哪些资料以及配合弄懂代码的方法。请多提提意见,谢谢各位,也欢迎粉我。
1. 首先我们用函数自己创建一个数据集
#创建数据集
def creatDataSet():
dataSet = [[1,1,'yes'],
[1,1,'yes'],
[1,0,'no'],
[0,1,'no'],
[0,1,'no']]
labels = ['no surfacing', 'flippers']
return dataSet,labels
dataSet,labels=creatDataSet()
labels
['no surfacing', 'flippers']
2.计算给定数据集的香农熵
这部分是在用代码计算香农熵公式,即用代码写公式并计算结果
def calcShannonEnt(dataSet):
#数据集行数
numEntires = len(dataSet)
#创建空字典记录yes or no的次数
labelCounts = {
}
#开始用循环语句统计,该思路和本书KNN算法是一样的
for featVec in dataSet:
currentLabel = featVec[-1]
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
#初始值是0,然后根据公式,用循环语句开始计算
shannonEnt = 0.0
for key in labelCounts:
#公式计算部分
prob = float(labelCounts