【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!

news2024/11/17 1:38:53

目录

🍔 案例剖析

🍔 通过sklearn实现决策树分类并进一步认识决策树

🍔 基于规则构建决策树

🍔 构建决策树的三个步骤

🍔 小结


学习目标

🍀 了解决策树算法的基本思想

🍀 了解Sklearn的决策树API

🍀 知道构建决策树的三个步骤

🍔 案例剖析

有的同学可能在大学学习过一门课程叫《数据结构》,里面有一个重要的结构就是“树”,和现实生活中的树一样,树的主要由四部分树根、树干、树枝、树叶组成,今天的决策树也是一种树结构,大家学习的时候可以想象现实生活中的树来来理解。

决策树算法是一种监督学习算法,英文是Decision tree。

决策树思想的来源非常朴素,试想每个人的大脑都有类似于if-else这样的逻辑判断,这其中的if表示的是条件,if之后的then就是一种选择或决策。程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。

比如:你母亲要给你介绍男朋友,是这么来对话的:

女儿:多大年纪了?

母亲:26。

女儿:长的帅不帅?

母亲:挺帅的。

女儿:收入高不?

母亲:不算很高,中等情况。

女儿:是公务员不?

母亲:是,在税务局上班呢。

女儿:那好,我去见见。

于是你在脑袋里面就有了下面这张图:

作为女孩的你在决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。

🍔 通过sklearn实现决策树分类并进一步认识决策树

基于鸢尾花数据绘制图像

import numpy as np
import matplotlib.pyplot as plt
​
from sklearn import datasets
​
iris = datasets.load_iris()
X = iris.data[:,2:]
y = iris.target
​
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
​
plt.show()

训练决策树模型

from sklearn.tree import DecisionTreeClassifier
​
tree = DecisionTreeClassifier(max_depth=2,criterion="entropy")
tree.fit(X,y)

依据模型绘制决策树的决策边界

#找到模型的决策边界,并绘制图像(此方法所用到的api不需要掌握,能够调用就行)
def plot_decision_boundary(model,axis):
    x0,x1 = np.meshgrid(
        np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),
        np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1)
    )
    X_new = np.c_[x0.ravel(),x1.ravel()]
    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)
    
    from matplotlib.colors import ListedColormap
    custom_map = ListedColormap(["#EF9A9A","#FFF59D","#90CAF9"])
    
    plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_map)
    
plot_decision_boundary(tree,axis=[0.5,7.5,0,3])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
plt.show()

树模型可视化

from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
​
plot_tree(tree,filled=True)
plt.show()

从上面的可视化图形中看出

  • X[1] <=0.8 作为第一次分割的依据,满足条件的所有样本均为统一类别

  • X[1]>0.8的,依据 X[1]<=0.75 为划分依据

  • 由于设置了树的最大深度为2,第二层的两个叶子节点没有完全区分开

🍔 基于规则构建决策树

在商业的数据挖掘中,不同的消费行为顾客特征的提炼和表述极为重要。

我们模拟了部分顾客及其消费行为数据,包括如下特征:

  • 用户是否购买某种产品(0购买,1不购买)

  • 年龄(青年0,中年1,老年2)

  • 收入(高0,中1,低2)

  • 学生(是1,否0)

  • 信誉(良0,优1)。

我们收集了如表1-1的部分用户购买数据,建立了一张统一的调查表,统计几个月的销售数据。我们要对下表中潜在的客户进行分析,并根据得到的一些特征用于销售人员制定销售策略等工作。

总结为两个问题:

(1) 如何对客户进行分类?

(2) 如何根据分类的依据,给出销售人员的指导意见?

通过上述分析,即可解决问题:

(1)如何对客户进行分类?

答:根据数据集中收集的用户的特征信息

(2)如何根据分类依据,给出销售指导意见呢?

答:给出这样的销售意见:

中年人通常会无条件购买

青年人中如果是学生一般会购买

老年人中信誉好的常常会购买

下面我们思考,如何得到这样的分析结果信息?我们可以通过基于规则建树实现。

从定性的角度画出决策树:

从定量的角度画出决策树:

为什么需要从定量角度来分析呢?

答:这样会更精确的分析用户的特征信息,给出销售人员更准确的数据信息。

根据该树可以解决问题:

(1)如何对客户进行分类?

答:根据数据集中收集的用户的特征信息

(2)如何根据分类依据,给出销售指导意见呢?

答:给出这样的销售意见:

中年人通常会无条件购买

青年人中如果是学生一般会购买

老年人中信誉好的常常会购买

  • 以上就是基于规则建树,接下来我们总结构建决策树三要素。

  • 同时思考,上述建树过程有哪些地方可以优化?

接下来总结出构建决策树三要素

🍔 构建决策树的三个步骤

🐼 通过上述总结分析,归纳总结构建决策树包括三个步骤:

  • 特征选择:选取有较强分类能力的特征

  • 决策树生成

  • 决策树剪枝

🍔 小结

🍬 决策树算法:

  • 是非参数学习算法

  • 可以解决分类(多分类)问题

  • 可以解决回归问题:落在叶子节点的数据的平均值作为回归的结果

🍬 决策树API:

  • from sklearn.tree import DecisionTreeClassifier

  • from sklearn.tree import plot_tree

🍬 构建决策树的三个步骤:

  • 特征选择:选取有较强分类能力的特征

  • 决策树生成

  • 决策树剪枝

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经纬恒润INTEWORK-TPA 新版本正式发布

在汽车电子研发领域&#xff0c;随着产品复杂度日益提升&#xff0c;测试工作的重要性愈发凸显。然而&#xff0c;测试用例撰写的繁琐、测试数据统计的困难以及报告管理的无序&#xff0c;常常让测试工程师们倍感压力。为了解决测试管理的难题&#xff0c;经纬恒润正式推出INTE…

拿到一个新项目,如何开展测试?

很多人拿到一个项目就开始用自己的理解进行测试&#xff0c;这样的话可能会造成因为自己对需求理解的偏差&#xff0c;导致在测试过程中会发现自己理解的需求跟开发实际做出来的功能不一致。其实&#xff0c;拿到一个新项目后&#xff0c;开展测试工作是一个系统而有序的过程。…

Python爬虫(一文通)

Python爬虫&#xff08;基本篇&#xff09; 一&#xff1a;静态页面爬取 Requests库的使用 1&#xff09;基本概念安装基本代码格式 应用领域&#xff1a;适合处理**静态页面数据和简单的 HTTP 请求响应**。 Requests库的讲解 含义&#xff1a;requests 库是 Python 中一个…

北京青蓝智慧科技: 我国网民规模近11亿人 互联网普及率达78%

中国互联网络信息中心&#xff08;CNNIC&#xff09;近日发布了最新一期《中国互联网络发展状况统计报告》。 根据报告&#xff0c;截至2024年6月&#xff0c;中国的网民数量接近11亿&#xff0c;具体数字为10.9967亿人&#xff0c;较2023年12月增加了742万&#xff0c;互联网…

【pyhton】python如何实现将word等文档中的文字转换成语音

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

空间计量 | 空间误差模型SEM

在空间OLS回归分析中如果得到LM检验并且判断得到应该使用空间误差SEM模型时&#xff0c;接着本文档介绍空间误差SEM模型。首先空间误差SEM模型的数学模式公式如下&#xff1a; y βk * x u , u λ * Wu &#xff08;为扰动项&#xff09;&#xff0c;Wu为误差(扰动项)空间…

登山第一梯:使用rviz显示bag包中的点云数据

第一步&#xff0c;连接ros master&#xff1a; roscore ​​​​​第二步&#xff0c;打开rviz&#xff08;默认的rviz&#xff09; rosrun rviz rviz ​第三步&#xff0c;查看bag包信息&#xff0c;获取topic信息 rosbag info [bag包路径] 有三个topic&#xff0c;分别时/bp…

SAP B1 三大基本表单标准功能介绍-物料主数据(上)

背景 在 SAP B1 中&#xff0c;科目表、业务伙伴主数据、物料主数据被称为三大基本表单&#xff0c;其中的标准功能是实施项目的基础。本系列文章将逐一介绍三大基本表单各个字段的含义、须填内容、功能等内容。 附上 SAP B1 10.0 的帮助文档&#xff1a;SAP Business One 10…

【测试】bug 相关知识点总结

目录 一、什么是 bug 二、描述 bug 的要素 三、bug 级别 四、bug 的生命周期 一、什么是 bug 在软件开发中&#xff0c;bug 是指软件程序中存在的错误、缺陷或故障。这些问题可能导致软件在运行时出现意外的行为、产生错误的结果、崩溃或无法正常工作。Bug 可以出现在软件…

【机器学习-神经网络】卷积神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

6.824 lab2B raft 记录

Raft 2B Task LOG Implement the leader and follower code to append new log entries 您的第一个目标应该是传递 TestBasicAgree3B&#xff08;&#xff09;。 首先实现 Start&#xff08;&#xff09;&#xff0c;然后编写代码 通过 AppendEntries RPC 发送和接收新的日志条…

非整周期截取信号对FFT分析的影响

原文出自微信公众号【小小的电子之路】 自然界中的模拟信号大部分都是无限长的&#xff0c;或者说对计算机而言可以说是无限长的&#xff0c;而计算机只能处理有限长的信号&#xff0c;怎么办呢&#xff1f;以快速傅里叶变换为例&#xff0c;我们通常是截取目标信号中有限长的一…

<Rust>egui学习之小部件(八):如何在窗口中添加滑动条slider部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第八篇博…

虚拟机Linux(Centos7)系统静态IP设置

文章目录 虚拟机Linux系统中通过DHCP获取IP地址的配置和静态IP设置1. 更改网络模式为NAT模式2. 设置虚拟机网络编辑器3. 配置网络文件3.1 修改网络配置文件3.2 添加静态IP、子网掩码和网关3.3 配置DNS 4. 重启网络服务5. 验证IP配置 虚拟机Linux系统中通过DHCP获取IP地址的配置…

LoRAMoE:缓解大模型的世界知识遗忘问题

人工智能咨询培训老师叶梓 转载标明出处 大模型&#xff08;LLMs&#xff09;在进行SFT时&#xff0c;通过增加指令数据量来提升其在多个下游任务中的性能或显著改善特定任务的表现。但研究者们发现&#xff0c;这种大规模的数据增加可能会导致模型遗忘其预训练阶段学习到的世…

加密与安全_前后端通过AES-CBC模式安全传输数据

文章目录 Pre概述前端加密是否有意义&#xff1f;环境准备加密方法、MODE和PADDING的选择前端后端应用&#xff1a;从传输到解密的全过程安全性增强动态生成密钥和初始向量1. 前端&#xff1a;动态生成密钥和IV2. 后端&#xff1a;解密动态密钥和IV 结语 Pre 加密与安全_解密A…

TMGM:欧元区通胀放缓将支持9月欧洲中央银行降息

八月份德国通胀率出乎意料的下降超过预期。欧洲中央银行可能会保持其放松的货币政策。美元/欧元矫正性下跌可能在本周结束前继续。 欧洲统计局将在周五公布八月份欧元区消费者价格(调和)指数(HICP)的预估数值&#xff0c;预期结果将支持9月份决策者降息的决定。 因为对经济增…

大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Python 如何进行声音处理(pydub, wave模块)

Python 是一种功能强大的编程语言&#xff0c;它提供了丰富的库和模块用于各种任务的执行&#xff0c;包括声音处理。对于声音处理&#xff0c;pydub 和 wave 模块是最常用的两个库。 一、Python中的声音处理基础知识 在深入探讨具体的模块之前&#xff0c;我们先了解一些声音…

深度学习基础--损失函数

前三章分别介绍了线性回归、浅层神经网络和深度神经网络。这些都属于函数家族&#xff0c;能够实现从输入到输出的映射&#xff0c;其具体的函数取决于模型参数 ϕ \phi ϕ。在训练这些模型时&#xff0c;我们的目标是找到能够为特定任务提供最优输入输出映射的参数。本章将详…