机器学习实战-决策树
决策树的第一个算法为,计算给定数据集的香农熵
香农熵的计算公式都给出来了,下面贴一下代码
还是比较好懂的,就是先创建一个字典,在字典里面对每个类别新建一个键值对,值为每个类别的样本个数
之后分别计算概率啊什么的
输出如下
跟书上的答案是一样的
我个人有一点点的疑问是对字典类型的自建函数
下面看看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行前面的是什么意思,所以就顺手写了几个示例。现在算是明白了