说明:本文依据《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这类算法更吊,能产生超过两个子节点的决策树模型。
进一步,生成决策树的决策边界。
领取专属 10元无门槛券
私享最新 技术干货