机器学习算法之——决策树模型(Decision Tree Model)

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 简单说明一下上面的图像, 每一个叶子节点中有class, 表示按照上面的规则, 会被分到哪一个类别中. 同时, 每一个节点中有values, 表示到这一个节点中每一个类别的样本有多少个, 如上面的例子中一共有3类样本, 所以values中有三个数字, 分别是三个类别的样本的个数.

所属分类:机器学习

摘要


这一篇简单介绍一下使用决策树来进行分类任务, 同时我们会对决策树的结果进行可视化的显示. 这里会使用iris的例子进行分析.


简介


这一篇是对于决策树的介绍, 使用决策树来解决分类问题, 同时我们会将决策树的结果进行可视化, 来查看他的分类的过程.


参考资料


主要参考内容来自sklearn的官方教程: 1.10. Decision Trees


这也是一个进行可视化的博客, 最后保存和显示的方式会有不同. Creating and Visualizing Decision Trees with Python

 

模型的训练与可视化


导入数据集


首先我们导入我们需要的库.


import sklearn.datasets as datasets
import pandas as pd


接下来我们就可以导入数据集


iris = datasets.load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
y = iris.target


我们简单看一下使用的数据集.


 640.jpg


训练决策树模型


接着, 我们训练决策树模型, 为了最后的显示效果, 我们控制决策树的深度.


from sklearn.tree import DecisionTreeClassifier
# 训练决策树模型(控制决策树的深度, 这里控制最大深度是2)
dtree = DecisionTreeClassifier(max_depth=2)
dtree.fit(df, y)
"""
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,
            max_features=None, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, presort=False, random_state=None,
            splitter='best')
"""


关于sklearn中决策树的参考文档: sklearn.tree.DecisionTreeClassifier

 

模型的评价


关于模型的评价, 可以参考下面的链接: 模型评价指标说明与实践–混淆矩阵的说明


from tools import *
我们对上面的决策树进行评价(我直接在训练集上进行看准确率了, 这里就是做一个演示, 实际使用的时候需要划分测试集).
# 模型的评估
y_pre = dtree.predict(df)
display_model_performance_metrics(true_labels=y,
                             predicted_labels=y_pre,
                                 classes=[0,1,2])


最终的模型的准确率如下所示, 可以看到即使深度不是很深, 准确率也是可以的.


640.jpg

 

结果的可视化


接下来我们就将决策树的结果进行可视化. 我们会使用到graphviz.


from sklearn.tree import export_graphviz
import graphviz
需要将graphviz添加到路径中, 具体的内容看下面的一些问题中的内容.
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin'
对于生成的图像, 我们可以设置每一类的lable的名字, 等一些其他的设置.
dot_data = export_graphviz(dtree, out_file=None,
                           feature_names=iris.feature_names,
                           class_names=iris.target_names,
                           filled=True, rounded=True,
                           special_characters=True)
# 可以设置图像的显示
graph = graphviz.Source(dot_data)
最后只需要将图像进行保存即可.
graph.render(filename ="iris", directory ='./', format='pdf')


关于图像保存的参数的说明, 可以参考文档: graphviz.render


这个是graphviz的说明文档: graphviz稳定版文档


最终的可视化的效果, 如下图所示:


640.jpg


简单说明一下上面的图像, 每一个叶子节点中有class, 表示按照上面的规则, 会被分到哪一个类别中. 同时, 每一个节点中有values, 表示到这一个节点中每一个类别的样本有多少个, 如上面的例子中一共有3类样本, 所以values中有三个数字, 分别是三个类别的样本的个数.

 

一些问题


Make sure the Graphviz executables are on your systems' PATH


详细的报错信息:


  1. RuntimeError: failed to execute ['dot', '-Tpdf', '-O', 'test'], make sure the Graphviz executables are on your systems' path


在进行可视化的时候, 会出现如上的报错, 我们可以使用下面的方式进行解决.


  • 首先下载: Graphviz - Graph Visualization Software


  • 接着在运行的时候添加到路径即可:


import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin'


这样再次运行即可.


参考链接: “RuntimeError: Make sure the Graphviz executables are on your system's path” after installing Graphviz 2.38


640.gif


参考文献:

————————————————

[1] DecisionTree决策树大全原文链接:http://ihoge.cn/2018/DecisionTree.html

[2]【机器学习】决策树(上)——从原理到算法实现 原文链接:

https://blog.csdn.net/fengyanqingnudt/article/details/84135997

[3] 简单决策树模型(Python实现)原文链接:https://blog.csdn.net/qq_41398808/article/details/90698154

[4] 隐马尔科夫模型(HMM)及其Python实现 原文链接:

https://blog.csdn.net/fengyanqingnudt/article/details/84135997

相关文章

机器学习算法之——隐马尔科夫链(Hidden Markov Models, HMM)

机器学习算法之——支持向量机(Support  Vector Machine, SVM)

机器学习算法之——逻辑回归(Logistic Regression)

机器学习算法之——梯度提升(Gradient Boosting) 上

机器学习算法之——梯度提升(Gradient Boosting) 下

相关文章
|
27天前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
3天前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
42 15
|
11天前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
1月前
|
机器学习/深度学习 PyTorch API
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
Transformer架构自2017年被Vaswani等人提出以来,凭借其核心的注意力机制,已成为AI领域的重大突破。该机制允许模型根据任务需求灵活聚焦于输入的不同部分,极大地增强了对复杂语言和结构的理解能力。起初主要应用于自然语言处理,Transformer迅速扩展至语音识别、计算机视觉等多领域,展现出强大的跨学科应用潜力。然而,随着模型规模的增长,注意力层的高计算复杂度成为发展瓶颈。为此,本文探讨了在PyTorch生态系统中优化注意力层的各种技术,
60 6
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
|
20天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
37 12
|
27天前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
46 8
|
27天前
|
机器学习/深度学习 算法 Python
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。本文详细介绍了随机森林的工作原理、性能优势、影响因素及调优方法,并提供了Python实现示例。适用于分类、回归及特征选择等多种应用场景。
53 7
|
27天前
|
机器学习/深度学习 Python
机器学习中模型选择和优化的关键技术——交叉验证与网格搜索
本文深入探讨了机器学习中模型选择和优化的关键技术——交叉验证与网格搜索。介绍了K折交叉验证、留一交叉验证等方法,以及网格搜索的原理和步骤,展示了如何结合两者在Python中实现模型参数的优化,并强调了使用时需注意的计算成本、过拟合风险等问题。
47 6
|
1月前
|
机器学习/深度学习 数据采集 算法
从零到一:构建高效机器学习模型的旅程####
在探索技术深度与广度的征途中,我深刻体会到技术创新既在于理论的飞跃,更在于实践的积累。本文将通过一个具体案例,分享我在构建高效机器学习模型过程中的实战经验,包括数据预处理、特征工程、模型选择与优化等关键环节,旨在为读者提供一个从零开始构建并优化机器学习模型的实用指南。 ####
|
1月前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。

热门文章

最新文章

相关产品

  • 人工智能平台 PAI