机器学习实战-决策树

决策树的第一个算法为,计算给定数据集的香农熵

香农熵的计算公式都给出来了,下面贴一下代码

机器学习实战-决策树

还是比较好懂的,就是先创建一个字典,在字典里面对每个类别新建一个键值对,值为每个类别的样本个数

之后分别计算概率啊什么的

输出如下

机器学习实战-决策树

跟书上的答案是一样的

我个人有一点点的疑问是对字典类型的自建函数

下面看看python文档

dict.keys()             

返回一个包含字典中键的列表

>>> help(dict.keys)
Help on method_descriptor:

keys(...)
    D.keys() -> a set-like object providing a view on D's keys

dict.values()           

返回一个包含字典中所有值的列表

>>> help(dict.values)
Help on method_descriptor:

values(...)
    D.values() -> an object providing a view on D's values

dict.items()

返回一个包含字典中(键, 值)对元组的列表

>>> help(dict.items)
Help on method_descriptor:

items(...)
    D.items() -> a set-like object providing a view on D's items

 

 

下面是按照给定的属性以及属性值划分数据集,

书上的例子是每次如果使用过这个属性之后,就将这个属性从数据集中去掉

我觉得不需要这样

机器学习实战-决策树

 

下面选择最好的划分样本集的方式:

贴代码:

机器学习实战-决策树

有点乱,而且有一个地方书上是用列表生成的方法做的,比我写的要好一些,但功能是一样的

最后的返回值结果是一样的。

下面是创建树的代码,

机器学习实战-决策树

因为之前我写的函数与书上的略微有差别,故这里我又进行了改动,增加了一个参数,就是attribute_num,表示的是样本中属性的个数,这个值需要自己去传。

机器学习实战-决策树

刚刚还是有点不熟悉232行前面的是什么意思,所以就顺手写了几个示例。现在算是明白了