决策树算法上篇

news2024/12/23 14:24:29

决策树概述

决策树是属于有监督机器学习的一种,起源非常早,符合直觉并且非常直观,模仿人类做决策的过程,早期人工智能模型中有很多应用,现在更多的是使用基于决策树的一些集成学习的算法。

示例一:

2288e6e1395a44039715160ddd5f987c.png

上表根据历史数据,记录已有的用户是否可以偿还债务,以及相关的信息。通过该数据,构建的决策树如下

c70406d486074c1ca1b5395def3216b9.png

比如新来一个用户:无房产,单身,年收入55K,那么根据上面的决策树,可以预测他无法偿还债务(蓝色虚线路径)。从上面的决策树,还可以知道是否拥有房产可以很大的决定用户是否可以偿还债务,对借贷业务具有指导意义。

示例二:

女孩母亲要给她介绍对象,年龄是多少,母亲说24。长得帅吗?挺帅的。收入高吗?中等收入。是公务员吗?母亲说,是的。女孩:好,我去见见。

根据实力构建决策树:

625162e1241a41a9962e69294fc5da04.png

 

问题:图片是二叉树吗?

决策树是标准的二叉树,每个节点只有两个分支~

  • 上面那棵树中,属性:绿色的节点(年龄、长相、收入、是否是公务员)

    • 属性叫做,data,数据,一般使用X表示

    • 跟属性对应,目标值(橘色节点),一般使用y表示

  • 构建这棵树时,先后顺序,每个人,标准不同,树结构不同

  • 计算机,构建树,标准一致的,构建出来的树,一致

决策树算法特点

 

  • 可以处理非线性的问题

  • 可解释性强,没有方程系数𝜃

  • 模型简单,模型预测效率高 if else

 DecisionTreeClassifier使用

e132644dcc0c4f2ba0950813794237b6.png

其中s、m和l分别表示小、中和大。

账号是否真实跟属性:日志密度、好友密度、是否使用真实头像有关系~

 构建决策树并可视化

数据创建

import numpy as np
import pandas as pd
y = np.array(list('NYYYYYNYYN'))
print(y)
X = pd.DataFrame({'日志密度':list('sslmlmmlms'),
                  '好友密度':list('slmmmlsmss'),
                  '真实头像':list('NYYYYNYYYY'),
                  '真实用户':y})
X

模型训练(报错,原因:数据类型是字符串)

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier()

model.fit(X,y)

数据修改(map函数,进行数据转换)  

X['日志密度'] = X['日志密度'].map({'s':0,'m':1,'l':2})
X['好友密度'] = X['好友密度'].map({'s':0,'m':1,'l':2})
X['真实头像'] = X['真实头像'].map({'N':0,'Y':1})
X

模型训练可视化

import matplotlib.pyplot as plt
# 使用信息熵,作为分裂标准
model = DecisionTreeClassifier(criterion='entropy')
model.fit(X,y)
plt.rcParams['font.family'] = 'STKaiti'
plt.figure(figsize=(12,16))
fn = X.columns
_ = tree.plot_tree(model,filled = True,feature_names=fn)
plt.savefig('./iris.jpg')

825bf4f5813446439fa185ad0f6863f0.png

数据可视化另一种方式

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
import graphviz
from sklearn import tree
model = DecisionTreeClassifier(criterion='entropy')
model.fit(X,y)
dot_data = tree.export_graphviz(model, out_file=None, 
                            feature_names= X.columns,# 特征名
                            class_names=np.unique(y),# 类别名
                            filled=True, # 填充颜色
                            rounded=True) # 圆角
graph = graphviz.Source(dot_data)
graph.render('Account',format='png')

修改中文乱码  

import re
# 打开 dot_data.dot,修改 fontname="支持的中文字体"
f = open('Account', 'r', encoding='utf-8')
with open('./Account2', 'w', encoding="utf-8") as file:
    file.write(re.sub(r'fontname=helvetica', 'fontname=Fangsong', f.read()))
f.close()
# 从文件中加载,展示
graph = graphviz.Source.from_file('./Account2')
graph.render('Account')

269acbf555ec4b60ac970bb9afd93382.png

信息熵

  • 构建好一颗树,数据变的有顺序了(构建前,一堆数据,杂乱无章;构建一颗,整整齐齐,顺序),用什么度量衡表示,数据是否有顺序:信息熵

  • 物理学,热力学第二定律(熵),描述的是封闭系统的混乱程度

 

e609fa53a888489eb1ce09695b720175.gif

信息熵,和物理学中熵类似的  

54e8ae8ed22f45da89d2190a6bb4aa80.png


 b172b785cee64d089e68783314be4362.png

信息增益

信息增益是知道了某个条件后,事件的不确定性下降的程度。写作 g(X,Y)。它的计算方式为熵减去条件熵,如下

d91eab265fbb4716a8bc62c680a53459.png

表示的是,知道了某个条件后,原来事件不确定性降低的幅度。

 

 

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

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

相关文章

1.C++中程序的基本结构

在教孩子的学习过程中,使用的开发IDE为小熊猫Dev-C 6.7.5版本,以后的复杂截图,基本上都是基于此版本进行的,同时在适当的时候,录制视频也会基于此版本来完成。 以下为一个最基本的C程序 int main() {// 程序主体retur…

无痛生娃,00后当妈啦

姐妹们,你们家开始催婚了吗?我是00后,大学也才毕业一年啊,我妈已经开始给我物色对象,过年让我去相亲了!大学的时候不让谈,说怕异地以后感情不稳定,结果呢,一毕业要我结婚…

频域滤波为什么使用psf2otf函数?线性卷积和循环卷积等效的条件

线性卷积和循环卷积是本质不同的运算。然而,在某些条件下,线性卷积和循环卷积是等效的。建立这种等效关系具有重要意义。对于两个向量 x 和 y,循环卷积等于二者的离散傅里叶变换 (DFT) 之积的逆 DFT 变换。 禹晶、肖创柏、廖庆敏《数字图像处…

基于python+django+mysql+Nanodet检测模型的水稻虫害检测系统

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

『功能项目』项目优化 - 框架加载资源【41】

我们打开上一篇40播放动画时禁止点击移动的项目, 本章要做的事情是搭建一个资源加载框架,让UI界面,人物模型以及场景都存放在资源文件夹中在运行时加载出来 首先在资源商店加载资源 将怪物模型放置场景中 将普通管线模型切换成URP 重命名为…

重学SpringBoot3-集成RocketMQ(二)

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成RocketMQ(二) 1. 基础概念2. 准备工作3. 实现事务消息的生产者4. 事务监听器实现5. 消费者示例6. 发送事务消息7. 测试7.1 模…

rust学习——关联类型

什么是关联类型 关联类型是Rust中一种特殊的泛型抽象机制。在trait中,可以定义一个或多个关联类型,这些关联类型与trait的实现类型相关联。关联类型允许我们在trait中使用泛型,但不需要提前指定具体的类型。 不使用关联类型存在的问题 tra…

AI生成头像表情包,一次十分钟,就能实现月入过万的玩法,无脑操作

今天给大家带来的项目是AI生成表情包和头像,这个项目对于我们做ip来说是真心不错,就比如我这个头像。 为什么说每天只需要10分钟呢,那么我们继续往下看。 "项目介绍 这个项目的核心其实就是使用AI生成表情包或者说生成头像&#xff0c…

华为HCIA、HCIP和HCIE认证考试明细

华为认证体系包括三个主要等级:HCIA(华为认证ICT助理)、HCIP(华为认证ICT高级工程师)和HCIE(华为认证ICT专家)。每个等级的认证都有其特定的考试内容和费用。 HCIA(华为认证ICT助理…

天翼云2024年最新版本认证必过资料(应知+从业者+解决方案架构师+高级解决方案架构师)

本资料为2024年认证最新材料,笔者因为工作需要考几个认证。天冀云全套认证包含如下图所示,本材料包含下图中红框内的 4个认证(应知从业者解决方案架构师高级解决方案架构师)。 笔者,亲测必过。见文章下面第二张考试记录…

模型加载pytorch版本不匹配的解决思路

模型部署总是会遇到pytorch版本推理与训练不匹配的问题&#xff0c;一般报错&#xff1a; AttributeError: Cant get attribute _rebuild_parameter_v2 on <module torch._utils from /usr/local/python3.9.0/lib/python3.9/site-packages/torch/_utils.py>提示pytorch …

医疗机构关于DIP/DRG信息化建设

推进DIP/DRG支付方式改革是一项系统性工程&#xff0c;牵一发而动全身。作为河北省DIP试点医院&#xff0c;河北医科大学第二医院将信息化与创新性管理理念融合&#xff0c;用好支付工具做好精细化管理&#xff0c;积极应对改革。 ■ 改革背景 国家医疗保障局制定的《DRG/DIP支…

18060 删除空格

**思路**: 1. 使用两个指针&#xff0c;一个指向当前字符位置&#xff0c;另一个指向下一个非空格字符应该放置的位置。 2. 遍历字符串&#xff0c;如果当前字符不是空格&#xff0c;则将其移动到目标位置指针处&#xff0c;并递增目标位置指针。 3. 最后在目标位置指针处添加字…

scratch作品练习-- 猫猫接月饼

作品展示 猫猫接月饼 作品设计 1&#xff09;内容&#xff1a; 嫦娥在最上方抛落月饼&#xff0c;猫猫要移动接住从上方掉落的月饼&#xff0c;接到月饼得分&#xff0c;没接住月饼落地消失。 2&#xff09;角色&#xff1a; 猫猫、月饼、嫦娥 3&#xff09;背景&#xff…

这么好用的桌面插件 怎么能不分享给你!

这么好用的桌面插件 怎么能不分享给你&#xff01;大家可能需要在桌面上创建一些功能&#xff0c;比如时间&#xff0c;日期&#xff0c;时钟&#xff0c;天气等&#xff0c;这时候就需要桌面插件才能实现&#xff0c;小编找过很多桌面插件或者桌面组件&#xff0c;发现了一个宝…

从0开始学习 RocketMQ:分布式事务消息的实现

消息队列中的事务&#xff0c;主要是解决消息生产者和消息消费者数据一致性的问题。 应用场景 比如订单系统创建订单后&#xff0c;会发消息给购物车系统&#xff0c;将已下单的商品从购物车中删除。 由于购物车删除商品这一步骤并不是用户下单支付这个主流程中的核心步骤&a…

Redhat 7,8系(复刻系列) 一键部署Oracle21-xe rpm

Oracle21c-xe前言 无论您是开发人员、DBA、数据科学家、教育工作者,还是仅仅对数据库感兴趣,Oracle Database Express Edition (XE) 都是理想的入门方式。它是全球企业可依赖的强大的 Oracle Database,提供简单的下载、易于使用和功能齐全的体验。您可以在任何环境中使用该…

orangepi部署web环境

orangepi web环境搭建 mysql安装mysql卸载 FTP安装java安装tomcat安装Maven配置 mysql安装 查看MySQL安装包 接下来可以使用以下命令安装MySQL服务器&#xff1a; 安装MySQL 8.0 # 安装最新版本 sudo apt install -y mysql-server # 安装指定版本 sudo apt install -y mysql…

Mystic 会是 Midjourney 的终结者吗?

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 这两年来 Midjourney 一直是互联网上最好的人工智能图像生成器。它制作了一些我们所见过的最流行和最具争议的 AI 图像,Midjourney 无与伦比的快速连贯性和照片级真实感使其领先于 OpenAI、谷歌和亚…

喜报!普罗格入选软件百强企业榜单

金秋九月&#xff0c;一个象征着成熟与收获的季节&#xff0c;普罗格迎来了发展历程中的又一里程碑。近期&#xff0c;普罗格以稳健的发展和创新的技术入选武汉软件百强企业榜单。在面对2024年复杂经营环境挑战的背景下&#xff0c;这一荣誉更显珍贵&#xff0c;彰显了武汉企业…