本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
本文我们介绍CART决策树的模型结构,决策树模型的预测流程,
并通过一个简单实例,讲解如何构建一棵CART决策树模型
本节讲述CART决策树的模型结构和它的运作原理
初步认识CART决策树模型是一个什么样的模型
CART决策树模型结构
CART决策树模型结构
CART分类树的模型结构如下:
CART分类树的模型是一棵二叉树
二叉树指的就是从一个根节点开始,不断一分为二从而得到的树结构
CART决策树的每个非叶子节点都记录一个特征(变量)和阈值,作为节点的判断依据
而在CART决策树的叶子节点,则记录样本类别,它是样本类别的判别依据
决策树模型的预测方式
决策树模型按如下方式对样本进行预测:
如图所示,决策树模型就是根据样本的各个特征的值,进行判断,
一直到达叶子,根据叶子类别确定样本是属于哪个类别
叶子节点不作判断,叶子节点只负责告诉我们,决策树模型的预测结果是什么
CART决策树的模型表示
决策树是一种描述型的模型,它没有数学表达式
决策树往往是用 一套 if else判断语句去描述树的样子
但不管用什么形式表达决策树,都必须包含如下三点:
👉1. 树结构 :树长什么样子
👉2. 节点分枝依据:分枝节点的特征名称和特征阈值
👉3. 叶子节点类别:叶子节点所属类别
本节通过一个实例,认识怎么利用软件包中的决策树函数构建一棵CART决策树
CART决策树实例-问题描述
现有鸢尾花样本数据如下(即sklearn中的iris数据):
数据共150条,
每条数据包括四个鸢尾花特征和鸢尾花的类别,如下:
特征:花萼长度 sepal length
花萼宽度 sepal width
花瓣长度 petal length
花瓣宽度 petal width
类别:0:山鸢尾,1:杂色鸢尾,2:弗吉尼亚鸢尾
现需要用以上鸢尾花数据,训练一棵cart决策树,
通过鸢尾花的特征来预测鸢尾花的类别
CART决策树实例-代码实现
利用sklearn中的决策树函数DecisionTreeClassifier,编写python代码如下:
from sklearn.datasets import load_iris
from sklearn import tree
import numpy as np
#----------------数据准备----------------------------
iris = load_iris() # 加载数据
#---------------模型训练----------------------------------
clf = tree.DecisionTreeClassifier(min_samples_leaf=15) # sk-learn的决策树模型
clf = clf.fit(iris.data, iris.target) # 模型构建,用数据训练树
#---------------模型预测结果------------------------
test_x = iris.data[[0], :]
pred_target = clf.predict(test_x) # 预测类别
#---------------打印结果---------------------------
print("\n===模型结构======")
print("树结构-左节点:"+str(clf.tree_.children_left))
print("树结构-右节点:"+str(clf.tree_.children_right))
print("节点分裂特征:"+str(clf.tree_.feature))
print("节点分裂阈值:"+str(np.round(clf.tree_.threshold,2)))
print("节点类别:"+str(clf.classes_.take( [ np.argmax(i) for i in clf.tree_.value])))
print("\n===模型预测=====")
print("数据:"+str(test_x)+',预测类别:'+str(pred_target))
代码运行结果如下:
===模型结构======
树结构-左节点:[ 1 -1 3 4 -1 -1 7 -1 -1]
树结构-右节点:[ 2 -1 6 5 -1 -1 8 -1 -1]
节点分裂特征:[ 2 -2 3 2 -2 -2 0 -2 -2]
节点分裂阈值:[ 2.45 -2. 1.75 4.45 -2. -2. 6.35 -2. -2. ]
节点类别:[0 0 1 1 1 1 2 2 2]
===模型预测=====
数据:[[5.1 3.5 1.4 0.2]],预测类别:[0]
CART决策树实例-结果解读
代码的运行结果中共包括两部分,
👉1. 第一部分是训练好的决策树模型结构
👉2. 第二部分是决策树模型的预测结果
1、决策树模型结构
代码的第一部分输出是训练好的决策树模型结构
决策树模型结构包括树结构、节点划分时的依据,节点的类别等
将上述结果进行分类整理后如下:
这里对决策树模型的结构描述采用的是“左右节点编号”的方式
它代表的是下述的决策树, 可结合下图进行理解上述各个数据的意义:
2、决策树模型预测结果
代码第二部分是决策树模型的预测结果:
它代表使用上面训练好的决策树,
对 样本【花萼长度,花萼宽度,花瓣长度,花瓣宽度】 = 【5.1 ,3.5,1.4 ,0.2】进行预测
得到了类别预测结果:0(山鸢尾)
预测的具体流程如下:
以上就是CART决策树模型简介与实例的全部内容了~
End