python揭秘决策树:如何每次都精确预测鸢尾花的种类

简介: python揭秘决策树:如何每次都精确预测鸢尾花的种类

机器学习领域,决策树是一种常见的分类方法,它通过从数据中学习简单的决策规则来预测目标变量。本文将介绍如何使用Python的scikit-learn库来加载Iris数据集、训练一个决策树模型、评估其准确率,并最终可视化这个模型。

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。

会一些的技术:数据分析、算法、SQL、大数据相关、python

欢迎加入社区:码上找工作

作者专栏每日更新:

LeetCode解锁1000题: 打怪升级之旅

python数据分析可视化:企业实战案例

备注说明:方便大家阅读,统一使用python,带必要注释,公众号 数据分析螺丝钉

1. 加载Iris数据集

Iris数据集是机器学习中最著名的数据集之一,由英国统计学家和生物学家Ronald Fisher在1936年介绍。它包含150个样本,每个样本都是关于鸢尾花的测量数据,包括:

  • 花萼长度(Sepal Length)
  • 花萼宽度(Sepal Width)
  • 花瓣长度(Petal Length)
  • 花瓣宽度(Petal Width)

这些样本分属于三个鸢尾花种类,每种50个样本:

  • Setosa
  • Versicolor
  • Virginica

Iris数据集的目的是基于这四个特征预测鸢尾花的种类,它是分类任务中的一个经典问题

2. 训练决策树模型

使用决策树对Iris数据集进行分类首先需要划分数据集为训练集和测试集,这可以通过train_test_split函数实现,通常我们保留一部分数据(如20%)作为测试集。之后,创建DecisionTreeClassifier的实例,并调用其fit方法用训练集训练模型。

它模拟了人类做决策的过程,通过一系列的问题来对数据进行分类。一个决策树包括:

  • 节点(Nodes):表示一个特征或属性。
  • 边/分支(Edges/Branches):代表决策规则。
  • 叶节点(Leaf nodes):代表一个分类或决策的输出结果。

在决策树中,从根节点(最顶部的节点)开始,根据每个节点代表的特征对数据进行分割,直到达到叶节点,叶节点表示最终的分类结果。

3. 评估模型的准确率

模型训练完成后,可以通过预测测试集的标签并与真实标签进行比较来评估模型的性能。accuracy_score函数能够计算模型预测的准确率,即正确预测的样本占总样本的比例。

4. 可视化决策树

scikit-learn提供了plot_tree函数,可以将训练好的决策树模型可视化。这个可视化展示了模型的决策过程,包括决策的条件、树的分支和叶节点等信息,使得模型的决策规则直观易懂。

详细步骤与代码实现

首先,安装必要的库:

pip install scikit-learn matplotlib

然后,通过以下Python代码来实现上述步骤:

# 使用Python实现一个简单的决策树分类器
 
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import tree
 
# 加载Iris数据集
iris = load_iris()
X = iris.data
y = iris.target
 
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 
# 创建决策树分类器实例
dt_clf = DecisionTreeClassifier(max_depth=3)
 
# 训练决策树分类器
dt_clf.fit(X_train, y_train)
 
# 在测试集上进行预测
y_pred = dt_clf.predict(X_test)
 
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")
 
# 可视化决策树
plt.figure(figsize=(20,10))
tree.plot_tree(dt_clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()

可视化呈现

解读

这张图展示了一个训练好的决策树模型,用于Iris数据集的分类问题。每个方框代表树中的一个节点,我们从顶部开始解读:

  • 根节点:它显示“petal width (cm) <= 0.8”表示根据花瓣宽度的值决定如何分割数据。节点还提供了“gini = 0.667”,这是基尼不纯度,一个衡量分支质量的指标;“samples = 120”表示该节点包含120个样本;“value = [40, 40, 39]”表示这120个样本中,有40个属于每个种类;而“class = versicolor”表示这个节点中最多的种类是Versicolor。
  • 第二层节点:根节点分为两个子节点。
  • 左边的子节点是一个叶节点,表示分类为Setosa的条件满足(花瓣宽度小于或等于0.8cm)。它是纯净的,所有40个样本都属于Setosa种类(gini = 0.0)。
  • 右边的子节点进一步根据“petal length (cm) <= 4.75”划分。
  • 第三层节点
  • 左边显示基于花瓣宽度的进一步划分(小于或等于1.65cm),这导致了一个几乎完全纯净的叶节点,其中36个样本中有35个属于Versicolor,1个属于Virginica。
  • 右边的节点是基于花瓣宽度小于或等于1.75cm的另一个划分。
  • 第四层节点:展示了两个叶节点。
  • 左边的节点是纯净的,只有一个Virginica样本。
  • 右边的节点几乎纯净,它有34个Virginica样本和一个Versicolor样本。

在这个决策树中,大多数叶节点的gini系数很低,意味着它们的分类是高度纯净的。从树的结构我们可以得出,花瓣宽度和长度是非常重要的特征,用于区分Iris花的种类。

最终,这个决策树提供了一个决策路径:通过检查花瓣的宽度和长度,我们可以将Iris花分为Setosa、Versicolor或Virginica。这个可视化非常有助于理解模型是如何基于花卉的物理特征做出分类决策的。


欢迎关注微信公众号 数据分析螺丝钉

相关文章
|
3天前
|
存储 大数据 索引
解锁Python隐藏技能:构建高效后缀树Suffix Tree,处理大数据游刃有余!
通过构建高效的后缀树,Python程序在处理大规模字符串数据时能够游刃有余,显著提升性能和效率。无论是学术研究还是工业应用,Suffix Tree都是不可或缺的强大工具。
18 6
|
4天前
|
存储 算法 数据挖掘
高效文本处理新纪元:Python后缀树Suffix Tree,让数据分析更智能!
在大数据时代,高效处理和分析文本信息成为关键挑战。后缀树作为一种高性能的数据结构,通过压缩存储字符串的所有后缀,实现了高效的字符串搜索、最长公共前缀查询等功能,成为文本处理的强大工具。本文探讨Python中后缀树的应用,展示其在文本搜索、重复内容检测、最长公共子串查找、文本压缩及智能推荐系统的潜力,引领数据分析迈入新纪元。虽然Python标准库未直接提供后缀树,但通过第三方库或自定义实现,可轻松利用其强大功能。掌握后缀树,即掌握开启文本数据宝藏的钥匙。
23 5
|
1天前
|
存储 开发者 Python
从理论到实践:Python中Trie树与Suffix Tree的完美结合,开启编程新篇章!
在编程领域,高效的数据结构对于解决问题至关重要。本文通过一个案例分析,介绍如何在Python中结合使用Trie树(前缀树)和Suffix Tree(后缀树)。案例聚焦于开发具备高效拼写检查和文本相似度检测功能的文本编辑器。首先,通过构建Trie树快速检查单词是否存在;接着,利用Suffix Tree检测文本相似度。尽管Python标准库未直接提供Suffix Tree,但可通过第三方库或自定义实现。本文展示了高级数据结构在实际应用中的强大功能,并强调了理论与实践相结合的重要性。
7 1
|
1天前
|
存储 算法 Python
逆袭之路:掌握Python字典树Trie与后缀树,成为技术圈的耀眼新星!
在编程的征途上,每个人都渴望成为那个能够独当一面、解决复杂问题的技术高手。而掌握高级数据结构,如字典树(Trie)与后缀树(Suffix Tree),无疑是你逆袭路上的重要一步。这些数据结构不仅能够提升你的编码技能,还能让你在解决特定问题时游刃有余,从而在技术圈中脱颖而出,成为那颗耀眼的新星。
9 1
|
2天前
|
存储 算法 搜索推荐
Python进阶必备:字典树Trie与后缀树Suffix Array,效率提升的神器!
在Python编程中,掌握高效的数据结构对于提升程序性能至关重要。本文将深入探讨两种强大的字符串处理数据结构——字典树(Trie)与后缀数组(Suffix Array)。字典树,又称前缀树,适用于自动补全和拼写检查等功能。例如,在文本编辑器中实现自动补全时,字典树能够即时提供单词补全选项。后缀数组则用于存储字符串的所有后缀并按字典序排序,结合最长公共前缀(LCP)数组,可以高效解决许多字符串问题,如查找最长重复子串等。通过实际案例,我们将展示这两种数据结构的强大功能,帮助你在Python编程中更进一步。
9 2
|
5天前
|
存储 算法 索引
从菜鸟到大神:一文带你彻底搞懂Python中的后缀树Suffix Tree奥秘!
在Python编程中,后缀树是一种高效的数据结构,特别适用于处理复杂的字符串问题,如搜索、最长公共前缀查询及最长重复子串查找等。本文通过问答形式介绍后缀树的基本概念、重要性及其实现方法。后缀树能显著提高字符串处理效率,将传统方法的时间复杂度从O(nm)降至接近O(m)。尽管其构建过程较复杂,但通过手动编写代码或使用第三方库,我们可以在Python中实现这一强大工具。后缀树的应用广泛,涵盖字符串搜索、压缩、生物信息学等多个领域,学习它不仅能帮助解决实际问题,更能提升算法思维和数据结构设计能力。
20 1
|
15天前
|
机器学习/深度学习 算法 数据挖掘
决策树算法大揭秘:Python让你秒懂分支逻辑,精准分类不再难
【9月更文挑战第12天】决策树算法作为机器学习领域的一颗明珠,凭借其直观易懂和强大的解释能力,在分类与回归任务中表现出色。相比传统统计方法,决策树通过简单的分支逻辑实现了数据的精准分类。本文将借助Python和scikit-learn库,以鸢尾花数据集为例,展示如何使用决策树进行分类,并探讨其优势与局限。通过构建一系列条件判断,决策树不仅模拟了人类决策过程,还确保了结果的可追溯性和可解释性。无论您是新手还是专家,都能轻松上手,享受机器学习的乐趣。
28 9
|
18天前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【9月更文挑战第9天】在数据科学领域,机器学习如同璀璨明珠,吸引无数探索者。尤其对于新手而言,纷繁复杂的算法常让人感到迷茫。本文将以决策树为切入点,带您从Python机器学习的新手逐步成长为高手。决策树以其直观易懂的特点成为入门利器。通过构建决策树分类器并应用到鸢尾花数据集上,我们展示了其基本用法及效果。掌握决策树后,还需深入理解其工作原理,调整参数,并探索集成学习方法,最终将所学应用于实际问题解决中,不断提升技能。愿这棵智慧之树助您成为独当一面的大师。
22 3
|
20天前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
29 1
WK
|
30天前
|
Python
python中的函数有哪些种类?
在 Python 中,函数根据定义方式、用途及来源可分为多种类型:自带的内置函数(如 print(), len())无需导入直接使用;标准库函数需导入相应模块后使用;第三方库函数则需先安装库再导入使用;用户自定义函数可根据需求定义并多次调用;匿名函数(lambda)无函数名,常用于需要函数对象但不想单独定义的情形;高阶函数接受或返回函数;装饰器函数可在不改动原函数代码情况下为其添加新功能;生成器函数使用 yield 逐个返回值;递归函数在自身定义中调用自身;嵌套函数在一个函数内定义,可访问外部函数变量。各种函数类型在编程中有不同的用途和优势。
WK
41 12