决策树简介(《机器学习实战》笔记)


决策树是一种机器学习算法,它可以实现分类和回归任务,甚至是多输出任务。它也是随机森林的重要组成部分,而随机森林则是现今最为强大的机器学习算法之一,因此了解决策树的原理是非常重要的。
说明为了说明方便,本篇博客插入了许多图片,部分图片由《机器学习实战》的作者通过jupyter notebook绘制,上传于GitHub供大家学习。

决策树分类

决策树训练和可视化

为了更加直观的了解决策树的工作原理,我们可以对决策树的训练结果进行可视化。首先我们可以使用决策树来制作一个鸢尾花分类器:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier

iris = load_iris()
X = iris.data[:,2:] #读取花瓣的长和宽
y = iris.target

tree_clf = DecisionTreeClassifier(max_depth=2)  #深度为2
tree_clf.fit(X,y)

训练好了决策树之后,我们可以使用export_graphviz()方法输出一个图形定义文件来查看训练好的决策树的结构:

from sklearn.tree import export_graphviz

export_graphviz(
    tree_clf,  #训练好的决策树
    out_file="iris_tree.dot",  #输出的文件路径
    feature_names=iris.feature_names[2:],  #提取特征的名字
    class_names=iris.target_names,  #提取标签的名字
    rounded=True,  #让决策树的框图圆润
    filled=True
)

对于输出的dot文件我们需要下载graphviz来打开,并将其输出为png等常见的文件格式。下载地址(下载msi)。下载安装完成之后,在目录中的bin文件夹中打开gvedit.exe,使用其打开dot文件,即可查看图片,点击setting按钮对其进行输出。
可视化结果如下:
决策树可视化

分类过程

预测过程根据上面的图可以清楚的看出来,当有一个示例输入时,先判断花瓣长度是否小于等于2.45cm,若是则进入左边的结点(深度1),属于setosa鸢尾花,若不是则进入右边的结点继续进行判断:花瓣的宽度是否小于等于1.75cm,若是则属于versicolor否则属于virginica。
每个结点中的samples表示它使用的训练实例的数量,value则表示该节点中训练集中每个类别中的数目,而gini则代表基尼不纯度,用来表示不纯度,如果应用的所有训练实例都属于一个类别,则gini=0,结点是“纯”的。基尼不纯度的计算公式为:
G i = 1 − ∑ k = 1 n p i , k 2 G_i=1-\sum^n_{k=1}p_{i,k}^2 Gi=1k=1npi,k2

其中 p i , k p_{i,k} pi,k是第i个节点上,类别为k的训练实例占比。
还有一种计算不纯度的方式,成为信息熵,其计算公式为:
H i = − ∑ k = 1   p i , k ≠ 0 n p i , k l o g ( p i , k ) H_i=-\sum_{k=1\ p_{i,k}\neq0}^np_{i,k}log(p_{i,k}) Hi=k=1 pi,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值