决定计划树的构造
- def dump_tree(self, filename, tree=None):
- ''' 存储决定计划树
- '''
- if tree is None:
- tree = self.tree
- with open(filename, 'w') as f:
- pickle.dump(tree, f)
- def load_tree(self, filename):
- ''' 加载树构造
- '''
- with open(filename, 'r') as f:
- tree = pickle.load(f)
- self.tree = tree
- return tree
以下面一个简单的用于是否买电脑猜测的决定计划树为例子,树中的内部节点表示某个属性,节点引出的分支表示此属性的所有可能的值,叶子节点表示最终的断定结不雅也就是类型。

借助可视化对象例如Graphviz,matplotlib的注解等等都可以讲我们创建的决定计划树范许可视化并直接被人懂得,这是贝叶斯神经收集等算法没有的特点。
决定计划树算法
决定计划树算法主如果指决定计划树进行创建中进行树决裂(划分数据集)的时刻拔取最优特点的算法,他的重要目标就是要拔取一个特点可以或许将分开的数据集尽量的规整,也就是尽可能的纯. 最大年夜的原则就是: 将无序的数据变得加倍有序
这里总结下三个常用的办法:
- 信息增益(information gain)
- 增益比率(gain ratio)
- 基尼不纯度(Gini impurity)
信息增益 (Information gain)
这里涉及到了信息论中的一些概念:某个事宜的信息量,信息熵,信息增益等, 关于事宜信息的通俗解释可以看知乎上的一个答复
- 某个事宜 i 的信息量: 这个事宜产生的概率的负对数

- 信息熵就是平均而言一个事宜产生获得的信息量大年夜小,也就是信息量的期望值

有了拔取最佳决裂属性的算法,下面我们就须要根据选择的属性来将树进一步的决裂。所谓树决裂只不过是根据选择的属性将数据集划分,然后在总划搀扶来的数据集中再次挪悠揭捉?取属性的办法拔取子数据集的中属性。实现的最好方法就是递归了.
任何一个序列都可以获取这个序列的信息熵,也就是将此序列分类后统计每个类型的概率,再用上述公式计算,应用Python实现如下:
- def get_shanno_entropy(self, values):
- ''' 根据给定列表中的值寂?驿Shanno Entropy
推荐阅读
【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! SQL注入(SQLi)应用不安然 Web App 和数据库驱动的类似软件,采取或修改数据(如用户账户记录),甚至在办事>>>详细阅读
本文标题:机器学习算法实践:决策树 (Decision Tree)
地址:http://www.17bianji.com/lsqh/36282.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示