首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习100天-Day1701决策树训练和可视化

说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解。

第六章是关于决策树的学习

决策树是一种多功能机器学习算法, 即可以执行分类任务也可以执行回归任务, 甚至包括多输出(multioutput)任务。它是一种功能很强大的算法,可以对很复杂的数据集进行拟合。决策树也是随机森林的基本组成部分(见第 7 章),而随机森林是当今最强大的机器学习算法之一。

本章主要内容

讨论如何使用决策树进行训练,可视化和预测。

学习在Sklearn上面使用 CART 算法,并且探讨如何调整决策树让它可以用于执行回归任务。

讨论决策树目前存在的一些局限性。

本章使用数据为Sklearn中iris数据

源代码已经同步在github中

https://github.com/jwc19890114/-02-learning-file-100days

决策树

终于追上进度了,今天进入决策树(Decision Trees)的学习,会配合Day100里面响应那天的教程,先完成本章学习,再进入Day100教程。

决策树是一种多功能机器学习算法,同样也可以执行分类任务、回归任务和多输出任务,在第三章中做了相对详细的介绍。决策树可以对很复杂的数据集进行拟合。

决策树是随机森林的基本组成部分。

本章学习内容

讨论如何使用决策树进行训练,可视化和预测。

学习在Sklearn上面使用 CART 算法,并且探讨如何调整决策树让它可以用于执行回归任务。

讨论一下决策树目前存在的一些局限性。

1. 决策树训练的可视化

使用数据集,sklearn的iris

引入数据

注意这里对数据集的调用,与之前不同,sklearn能够直接调用iris数据集,然后使用类似调用方法的写法来获取数据

你可以通过使用export_graphviz()方法,通过生成一个叫做iris_tree.dot的图形定义文件将一个训练好的决策树模型可视化。在这里要提前在文件根目录下建立一个新的文件夹images/decision_trees

生成决策树图

现在生成的是一个.dot文件,教程中使用Graphviz软件将该文件转为了决策树图

安装方法

我把msi版本软件放在了github根目录下,也可以从以下地址下载https://graphviz.gitlab.io/_pages/Download/Download_windows.html

按照教程安装

https://www.cnblogs.com/shuodehaoa/p/8667045.html

在测试成功安装后,进入decision_trees文件夹,按住shift同时右键,在该文件夹下进入powershell

在命令行输入dot -Tpng iris_tree.dot -o iris_tree.png

你会发现文件夹下有一个新的文件iris_tree.png,这就是生成的决策树图,根据上面的两个模型,在这里可以生成两张图,对比一哈……

开始预测

刚才生成的是决策树图,现在基于图进行分析。

从根节点(最顶端节点,深度为0)开始进行分类。该节点询问花朵的花瓣长度是否小于 2.45 厘米。如果是,向下移动到根的左侧子节点(深度为 1,左侧)。 在这种情况下,它是一片叶子节点(即它没有任何子节点),所以它不会问任何问题:查看该节点的预测类别,决策树预测你的花是 Iris-Setosa(class = setosa)。

另一朵花,但这次的花瓣长度是大于 2.45 厘米的。向下移动到根的右侧子节点(深度为 1,右侧),而这个节点不是叶节点,所以它会问另一个问题:花瓣宽度是否小于 1.75 厘米? 如果是,那么你的花很可能是一个 Iris-Versicolor(深度为 2,左)。 如果不是,那很可能一个 Iris-Virginica(深度为 2,右)。

节点samples属性统计出应用于多少个样本实例。

节点value属性统计每一个类别样例数目。

节点Gini属性测量纯度,(越小越好?),如果一个节点包含的所有训练样例全都是同一类别的,我们就说这个节点是纯的(Gini=0)。

Pi,k是第i个节点中训练实例为的k类实例的比值。

Sklearn使用的是CART算法,该算法仅产生二叉树(只有是或否两个结果),ID3这类算法更吊,能产生超过两个子节点的决策树模型。

进一步,生成决策树的决策边界。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190116A0S2TN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券