决策树可视化:鸢尾花数据集分类(附代码数据集)

article/2025/11/10 20:47:05

决策树

  • 数据集
  • 实战
  • 可视化
  • 评价

决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子,流程图就是一种决策树。
有没有车,没车的话有没有房,没房的话有没有存款,没存款pass。这个流程就是一个简单的决策树。
分类决策树模型是一种描述对实例进行分类的树形结构。通过很多次判断来决定是否符合某类的特征。

数据集

首先附上数据集:
链接:https://pan.baidu.com/s/1bFDGa7E6lnuHOQpb1KCDSQ
提取码:exxv

#load the data
import pandas as pd
import numpy as np
data = pd.read_csv('./iris_data.csv')
data.head()

在这里插入图片描述
数据集有3类花,每种花有4个特征。把4个特征投影到二维平面可以很清楚看出。setosa与其余两种鸢尾花有明显的边界,而versicolor和virginica这两种花具有相似的特征,看起来有些重叠。
如果是人为判断的话,我们可以这样想,setosa与其余两种花区别最大的特征就作为第一个分叉。
如果满足那么全是setosa,不满足则是其余2种,则再进行判断。
那么决策树会不会和我们想的一样呢?
在这里插入图片描述

实战

X = data.drop(['target','label'],axis=1)
y = data.loc[:,'label']
print(X.shape,y.shape)

在这里插入图片描述
150个样本,每个样本有4个维度的特征。
接下来就是构建决策树模型了。


from sklearn import tree
dc_tree = tree.DecisionTreeClassifier(criterion='entropy',min_samples_leaf=5)
dc_tree.fit(X,y)

在可以评测哪个数据划分方式是最好的数据划分之前,集合信息的度量方式称为香农熵或者简称为熵(entropy),常见的计算信息熵有3种,ID3,C4.5,CART。
而大多数情况都是用ID3算法,它的核心是在决策树各个结点上对应信息增益准则选择特征,递归地构建决策树。具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子节点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。ID3相当于用极大似然法进行概率模型的选择。
本文criterion='entropy’也就是采用ID3。
min_samples_leaf:叶子节点最少样本数,可选参数,默认是1。这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。叶结点需要最少的样本数,也就是最后到叶结点,需要多少个样本才能算一个叶结点。如果设置为1,哪怕这个类别只有1个样本,决策树也会构建出来。如果min_samples_leaf是整数,那么min_samples_leaf作为最小的样本数。如果是浮点数,那么min_samples_leaf就是一个百分比,同上,celi(min_samples_leaf * n_samples),数是向上取整的。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。
这里我们先选择5试试。

在这里插入图片描述

y_predict = dc_tree.predict(X)
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

导入评判正确率的函数,预测和真实值进行比较得出正确率97%,还是很不错的。
在这里插入图片描述

可视化

让读者去空想决策树结构还是比较麻烦的。为了易于理解和解释。决策树可以可视化。
feature_names=[‘花萼长’, ‘花萼宽’, ‘花瓣长’, ‘花瓣宽’],这就是一些特征。
class_names=[‘山鸢尾’, ‘变色鸢尾’, ‘维吉尼亚鸢尾’],这些是标签。

import matplotlib as mpl
font2 = {'family' : 'SimHei',
'weight' : 'normal',
'size'   : 20,
}
mpl.rcParams['font.family'] = 'SimHei'
mpl.rcParams['axes.unicode_minus'] = False
%matplotlib inline
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(20,20))
tree.plot_tree(dc_tree,filled='True',feature_names=['花萼长', '花萼宽', '花瓣长', '花瓣宽'],class_names=['山鸢尾', '变色鸢尾', '维吉尼亚鸢尾'])
plt.savefig('D:/桌面/1.png', bbox_inches='tight', pad_inches=0.0)

这是前文设置min_samples_leaf=5时候的决策树结构。
实际上min_samples_leaf有点的控制树的深度的意思,但是不是简单的值为多少深度就是多少。它是通过样本数来控制深度。如果再分下去的某个分支样本数小于5那么它就不会再分了。
如果想要直接控制深度的话,这里还有个参数是max_depth,这个参数值是多少那么决策树的深度就是多少了。
可以清晰看到决策树是怎么分类的。和前文博主构想的一样,鸢尾花数据集里面有一种花的特征与其余两种有很大区别,直接可以分类出。那这里就是如果花瓣宽小于等于0.8,那么就是山鸢尾花,而且注意到分类出来的山鸢尾花sample为50,说明根据这个特征分类出来山鸢尾花直接全部分类正确。其余的就再进行其他特征的判断,一层一层特征判断。

在这里插入图片描述
为了给读者展示min_samples_leaf如何控制决策树,博主这里令值为10再进行可视化看看。

dc_tree = tree.DecisionTreeClassifier(criterion='entropy',min_samples_leaf=10)
dc_tree.fit(X,y)
fig = plt.figure(figsize=(8,8))
tree.plot_tree(dc_tree,filled='True',feature_names=['花萼长', '花萼宽', '花瓣长', '花瓣宽'],class_names=['山鸢尾', '变色鸢尾', '维吉尼亚鸢尾'])
plt.savefig('D:/桌面/2.png', bbox_inches='tight', pad_inches=0.0)

可以看到最后的sample样本数都是大于等于10的,它不会继续往下分,深度才5。而上面min_samples_leaf=5时候最后的sample是大于等于5的,深度为6。
在这里插入图片描述

评价

优点:

  1. 易于理解和解释。决策树可以可视化。
  2. 几乎不需要数据预处理。其他方法经常需要数据标准化,创建虚拟变量和删除缺失值。
  3. 可以处理多值输出变量问题。
  4. 预测正确率达到了97%,准确率高。

缺点:

  1. 参数比较多,不同的参数对于决策树的结构影响较大,从而结果也会有些偏差。
  2. 决策树学习可能创建一个过于复杂的树,并不能很好的预测数据。也就是过拟合。

http://chatgpt.dhexx.cn/article/R6T8upCp.shtml

相关文章

机器学习算法:基于鸢尾花(iris)数据集的数据可视化 (200+收藏)

文章目录 基于鸢尾花(iris)数据集的数据可视化1、数据导入2、查看样本数据3、特征与标签组合的散点可视化3.1、 散点图3.2、 箱型图3.2、 三维散点图想要看更加舒服的排版、更加准时的推送 关注公众号“不太灵光的程序员” 干货推送,微信随时解答你的疑问 😃😃😃 基于…

鸢尾花数据集的可视化

#TensorFlow实战 鸢尾花数据集的可视化化展示 文章目录 前言一、介绍二、步骤1.引入库2.读入数据 前言 数据可视化展示能在实验中可视化展出实验结果,是基础部分 一、介绍 鸢尾花数据集是公开的数据集,可通过URL从TensorFlow的Keras连接下载。 二、步…

探索sklearn | 鸢尾花数据集

1 鸢尾花数据集背景 鸢尾花数据集是原则20世纪30年代的经典数据集。它是用统计进行分类的鼻祖。 sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一。 导入的方法很简单,不过我比较好奇它是如何来存…

线性回归实例-鸢尾花数据集

文章目录 一、具体实现步骤1. 导入Iris鸢尾花数据集2. 提取花瓣数据3. 拆分数据4. 训练模型 二、可视化结果展示1. 训练集2. 测试集 三、相关知识点讲解1. train_test_split()函数2. LinearRegression()函数3. 散点图与折线统计图的绘制 这篇文章中,我们要通过鸢尾花…

基于朴素贝叶斯的鸢尾花数据集分类

目录 1.作者介绍2.理论知识介绍2.1算法介绍2.2数据集介绍 3.实验代码及结果3.1 数据集下载3.2实验代码3.2实验结果 1.作者介绍 王炜鑫,男,西安工程大学电子信息学院,2021级研究生 研究方向:小型无人直升机模型辨识 电子邮件&…

鸢尾花数据集的数据可视化

鸢尾花数据集的数据显示 一、鸢尾花数据集介绍1.历史2.数据集 二、鸢尾花数据集可视化1.普通读取数据方法2.运行结果3.普通读取数据方法4.运行结果5.未使用mglearn库的代码6.运行结果7.使用mglearn库的代码8.运行结果 一、鸢尾花数据集介绍 1.历史 安德森鸢尾花卉数据集&#…

鸢尾花数据集分类

数据集介绍 共有数据150组,每组包括花萼长、花萼宽、花瓣长、花瓣宽4个输入特征。 同时给出了,这一组特征对应的鸢尾花类别。类别包括Setosa Iris(狗尾草 鸢尾),Versicolour Iris(杂色鸢尾)&…

鸢尾花数据集分类-决策树

文章目录 决策树数据集代码实验分析 决策树 决策树(Decision Tree)是一种基本的分类与回归方法,当决策树用于分类时称为分类树,用于回归时称为回归树。主要介绍分类树。 决策树由结点和有向边组成。结点有两种类型:内…

鸢尾花数据集的各种玩法

目录 鸢尾花数据集下载鸢尾花数据集iris csv文件下载数据集 Pandas访问csv数据集 Pandas库Pandas二维数据基本操作 读取csv数据集文件设置列标题names参数 访问数据显示统计信息DataFrame的常用属性:ndim、size、shape转化为NumPy数组 访问数组元素–索引和切片 鸢…

iris鸢尾花数据集最全数据分析

写在前面 在写这篇文章之前,首先安利下jupyter,简直是神作,既可以用来写文章,又可以用来写代码,文章和代码并存,简直就是写代码/文章/教程的利器。 安装很简单:pip install jupyter 使用很简单…

sklearn数据集——iris鸢尾花数据集

参考书籍:Python机器学习基础教程 1、初始数据 鸢尾花(Iris)数据集,是机器学习和统计学中一个经典的数据集。它包含在 scikit-learn 的 datasets 模块中。 我们可以调用 load_iris 函数来加载数据: from sklearn.da…

重拾Iris鸢尾花数据集分析

最近我又又又开始了我的机器学习道路,并且回过头来重新看了一遍Iris数据分析,作为机器学习里面最经典的案例之一,鸢尾花既是我入门机器学习到放弃的地方,又是再次细读之后给予我灵感的地方。 下面介绍一下这次灵感之旅&am…

Python-鸢尾花数据集Iris 数据可视化 :读取数据、显示数据、描述性统计、散点图、直方图、KDE图、箱线图

本博客运行环境为Jupyter Notebook、Python3。使用的数据集是鸢尾花数据集(Iris)。主要叙述的是数据可视化。 IRIS数据集以鸢尾花的特征作为数据来源,数据集包含150个数据集,有4维,分为3 类,每类50个数据&a…

《机器学习》分析鸢尾花数据集

转载地址:https://www.cnblogs.com/mandy-study/p/7941365.html 分析鸢尾花数据集 下面将结合Scikit-learn官网的逻辑回归模型分析鸢尾花示例,给大家进行详细讲解及拓展。由于该数据集分类标签划分为3类(0类、1类、2类)&#xff…

笔记篇二:鸢尾花数据集分类

目录 一、鸢尾花数据集 二、逻辑回归分析 三、逻辑回归实现鸢尾花数据集分类 四、散点图绘制 一、鸢尾花数据集 1、问题 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 5…

IRIS鸢尾花数据集(多种格式)-下载地址

最近看的例子有用到IRIS数据集, 个人找了半天,才找到合适格式的数据集。 因此,将我找到的数据集分享给大家,以免大家像我一样找很久。 我这里有3种格式的数据集,分别是: 1. iris.csv 2. Iris.data 3.…

鸢尾花数据集基本用法

Iris鸢尾花数据集是一个经典的数据集。 包含3类共150条记录,每类各50项数据,每一条记录都有四个体征。 可以通过这四个特征来预测鸢尾花属于哪一个品种。 一.鸢尾花数据集 首先导入数据集,用pandas读入iris.csv数据集,读取后的…

鸢尾花(iris)数据集分析

原文链接:https://www.jianshu.com/p/52b86c774b0b Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度…

鸢尾花(iris)数据集

鸢尾花(iris)数据集 更新时间:2021-03-21 01:01:09标签:数据集 鸢尾花 说明 机器学习教程 正在计划编写中,欢迎大家加微信 sinbam 提供意见、建议、纠错、催更。 鸢【音:yuān】尾花(Iris&a…

数据分析——鸢尾花数据集

鸢尾花数据集 Iris 鸢尾花数据集内包含 3 类分别为山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica),共 150 条记录,每类各 50 个数据,每…