第六章.决策树(Decision Tree)—ID3算法,C4.5算法

news2024/9/20 19:47:10

第六章.决策树(Decision Tree)

6.1 ID3算法,C4.5算法

1.决策树适用的数据类型

比较适合分析离散数据,如果是连续数据要先转换成离散数据再做分析
在这里插入图片描述

2.信息熵

1).概念:

  • 一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常不确定的事情(或者是我们一无所知的事情),需要了解大量信息->信息量的度量就等于不确定性的多少

2).公式:

在这里插入图片描述

3).示例:

  • 示例1:
    假设有一个普通骰子A,扔出1-6的概率都是1/6;骰子B,扔出1-5的概率为10%,扔出6的概率为50%,骰子C,扔出6的概率为100%

  • 计算:

    ①.骰子A:
    在这里插入图片描述
    ②.骰子B:
    在这里插入图片描述
    ③.骰子C:
    在这里插入图片描述

3.ID3算法

决策树会选择最大化信息增益来对结点进行划分。

1).信息增益计算公式:

在这里插入图片描述

2).公式示例:

在这里插入图片描述

  • 分析:
    在这里插入图片描述
  • 计算:
    在这里插入图片描述
    说明:
    ①.9/14,5/14对应Class:buys_computer那一列。

3).ID3算法示例:

·AllElectronics.csv中的数据:
在这里插入图片描述
·代码:

from sklearn.feature_extraction import DictVectorizer
from sklearn import tree
from sklearn import preprocessing
import graphviz
import csv

# 导入数据
DTree = open(r'D:\\data\\AllElectronics.csv', 'r')
reader = csv.reader(DTree)#使用import csv是因为表格中含有很多字符

# 获取第一行数据
headers = reader.__next__()
# print(headers)

# 定义两个列表
featureList = []
labelList = []

for row in reader:
    # 把Label存入List
    labelList.append(row[-1])
    rowDict = {}
    for i in range(1, len(row) - 1):
        # 建立一个数据字典
        rowDict[headers[i]] = row[i]
    featureList.append(rowDict)

# print(featureList)

# 把数据转换成01表示
vec = DictVectorizer()
x_data = vec.fit_transform(featureList).toarray()
# print('x_data:'+ str(x_data))

# 打印属性名称
feature_names = vec.get_feature_names_out()
# print(feature_names)

# 打印标签
# print('labelList:'+ str(labelList))

# 把标签转换成01表示
lb = preprocessing.LabelBinarizer()
y_data = lb.fit_transform(labelList)
# print('y_data'+str(y_data))

# 创建并拟合模型
DTree_model = tree.DecisionTreeClassifier(criterion='entropy')
DTree_model.fit(x_data, y_data)

# 测试
x_test = x_data[0]
print('x_test:' + str(x_test))

predictions = DTree_model.predict(x_test.reshape(1, -1))#变成二维数据
print('predict:' + str(predictions))

# 导出决策树
dot_data = tree.export_graphviz(DTree_model, out_file=None, feature_names=feature_names, class_names=lb.classes_,
                                filled=True, rounded=True, special_characters=True)

graph = graphviz.Source(dot_data)
graph.render('computer')

·结果展示: (文件会保存在运行目录下)
在这里插入图片描述

4.C4.5算法

ID3算法存在的缺陷:信息增益的方法倾向于首先选择因子数较多的变量。C4.5算法是ID3算法的优化版本。

1).信息增益的改进-增益率:

在这里插入图片描述

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

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

相关文章

动态规划(以背包问题为例)

1) 要求达到的目标为装入的背包的总价值最大,并且重量不超出2) 要求装入的物品不能重复动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。动态规划算法与分治算法类似&#xff…

JAVA线程池原理详解二

JAVA线程池原理详解二 一. Executor框架 Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生…

Linux操作系统安装MySQL(rpm安装)

Linux操作系统安装MySQL(rpm安装)1 背景2 环境说明3 准备工作3.1 端口查看3.2 检查安装3.3 创建MySQL用户和组4 MySQL安装4.1 下载MySQL4.2 解压安装包4.3 安装MySQL4.4 初始化MySQL4.5 启动MySQL4.6 设置MySQL初始密码4.6.1 查看数据库初始密码4.6.2 更…

力扣-合作过至少三次的演员和导演

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1050. 合作过至少三次的演员和导演二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运…

taobao.user.openuid.getbyorder( 根据订单获取买家openuid )

¥免费不需用户授权 根据订单获取买家openuid,最大查询30个 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, secret); UserOpenuidGetbyorderR…

性能测试流程及基本介绍

性能名次解释 1、用1个用户(几乎毫无压力)访问服务器,观察项目的基本性能 2、单场景(单接口-基准测试) 目的1:最大处理能力 压力测试 关注结果 目的2:评估接口的性能 负载测试 关注过程 一点点…

开源电子书工具Calibre 6.3 发布

Calibre 开源项目是 Calibre 官方出的电子书管理工具。它可以查看,转换,编辑和分类所有主流格式的电子书。Calibre 是个跨平台软件,可以在 Linux、Windows 和 macOS 上运行。Calibre 6.3 正式发布,此次更新内容如下:新…

离散数学---期末复习知识点

一、 数理逻辑 [复习知识点] 1、命题与联结词(否定¬、析取∨、合取∧、蕴涵→、等价↔),命题(非真既假的陈述句),复合命题(由简单命题通过联结词联结而成的命题) 2、命题公式与赋值(成真、成假)&#x…

软件测试2

一 web掐断三大核心技术 HTML:负责网页的结构 CSS:负责网页的美化 JS:负责网页的行为 二 工具的使用 改变HBuilder文字的大小: 工具-视觉主题设置-大小22-确定 三 html简介 中文定义:超文本标记语言 新建一个html…

浅谈跨境电商运行模式

近些年,由于疫情的原因和人们的消费习惯的改变,线下销售越来越不占优势,电商行业由于这几年的飞速发展,成功地吸引到我国的民众,拼多多、淘宝、京东、天猫等各种各样的国内电商平台涌现,依靠着产品质量好、…

OVN:ovn20.03.1/ovs2.13.0编译rpm过程

操作系统openeuler22.0,x86架构分别下载ovn和ovs的源码https://github.com/openvswitch/ovs/tree/v2.13.0https://github.com/ovn-org/ovn/tree/v20.03.1安装必要工具:yum install -y unzip tar make autoconf automake libtool rpm-build gcc libuuid-d…

FPGA纯verilog代码实现4路视频缩放拼接 提供工程源码和技术支持

目录1、前言2、目前主流的FPGA图像缩放方案3、目前主流的FPGA视频拼接方案4、本设计方案的优越性5、详细设计方案解读HDMI输入图像缩放图像缓存VGA时序HDMI输出6、vivado工程详解7、上板调试验证8、福利:工程源码获取1、前言 本文详细描述了FPGA纯verilog代码实现4…

MyBatis 架构介绍

MyBatis 架构介绍MyBatis 架构图MyBatis 所解决的 JDBC 中存在的问题引用MyBatis 架构图 mybatis 配置:mybatis-config.xml,此文件作为 mybatis 的全局配置文件,配置了 mybatis 的运行环境等信息。另一个 mapper.xml 文件即 sql 映射文件,文件…

跑步戴哪种蓝牙耳机比较好,五款适合跑步的蓝牙耳机推荐

跑步当中佩戴的蓝牙耳机,佩戴舒适度以及牢固度是我们首要关注的,耳机的材质还有耳机的防水能力,都是十分需要注意的方面。那具体在挑选运动耳机当中需要如何选择呢?下面收集的一些在运动当中比较好用的运动蓝牙耳机分享给大家。1、…

Python自动发周报给老板,到点赶紧跑

嗨害大家好鸭!我是小熊猫~ 作为一个社畜人 …勤勤恳恳的打工人!!! 几乎每周都要写周报 没办法只能用点小技术 用python写个小工具 让它来给老板发周报哈哈哈 更多python摸鱼小技巧、基础知识:点击此处跳转文末名片获取 目标细…

Mysql的索引

为什么写这篇文章呢~最近在梳理公司的数据库,在查看表结构的时候发现了这个 CREATE TABLE esp_5_N (ID int(11) NOT NULL AUTO_INCREMENT,pId int(11) DEFAULT NULL,EsFileId varchar(32) DEFAULT NULL,obligate1 varchar(45) DEFAULT NULL,obligate2 varchar(45) …

2023年了还不会写软件测试简历吗,那就来看这里吧,怎么样才能更容易让HR看到你的简历

作为软件测试的从业者,面试或者被面试都是常有的事。 可是不管怎样,和简历有着理不清的关系,面试官要通过简历了解面试者的基本信息、过往经历等。 面试者希望通过简历把自己最好的一面体现给面试官,所以在这场博弈中&#xff0…

志愿者招募令|来!一起Build OceanBase第一次开发者大会

2023 年 3 月 25 日,我们将开启第一次 OceanBase 开发者大会,走近开发者,共同探讨单机分布式、云原生、HTAP 等数据库前沿趋势,分享全新的产品 Roadmap,交流场景探索和最佳实践。 为了让活动现场更有活力,…

人工智能写的十段代码,九个通过测试了

“抢走你工作的不会是 AI ,而是先掌握 AI 能力的人” 编程测试 1. 我想用golang实现二叉树前序,请你帮我写一下代码。 // 定义二叉树节点 type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode }// 前序遍历 func PreOrderTraversal(root *Tre…

2023年车联网与自动驾驶车辆国际研讨会(SoCAV 2023)

重要信息 会议网址:www.socav.org 会议时间:2023年4月21-23日 召开地点:深圳 截稿时间:2023年3月30日 录用通知:投稿后2周内 收录检索:EI,Scopus ★2023年车联网与自动驾驶车辆国际研讨会&#xff0…