当前位置: 首页 > news >正文

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

第六章.决策树(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存入ListlabelList.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.lryc.cn/news/23516.html

相关文章:

  • springboot+pgbouncer+postgres数据库连接池集成方案及问题解决
  • Mysql 常用日期处理函数
  • Pod中容器的健康检查
  • 信贷系统学习总结(5)—— 简单的风控示例(含代码)
  • Java知识复习(四)多线程、并发编程
  • 一个9个月测试经验的人,居然在面试时跟我要18K,我都被他吓到了····
  • zigbee与WIFI同频干扰问题
  • git拉取指定的单个或多个文件或文件夹
  • 不是,到底有多少种图片懒加载方式?
  • CAD坐标有哪些输入方式?来看看这些CAD坐标输入方式!
  • 铰链、弹簧,特殊的物理关节
  • Android Studio相关记录
  • Linux 基础介绍-基础命令
  • Linux 进程:程序地址空间 与 虚拟内存
  • python 密码学编程
  • 【C++ | bug | 运算符重载】定义矩阵(模板)类时,使用 “友元函数” 进行 * 运算符重载时编译报错
  • 数学小课堂:无穷小(以动态的眼光看待世界,理解无限的世界)
  • leetcode 427. Construct Quad Tree(构建四叉树)
  • Spring Boot 3.0系列【2】部署篇之使用GraalVM构建原生镜像
  • 复习知识点十之方法的重载
  • 火爆全网的ChatGPT 和AI 可以为项目经理做什么?
  • 前端面试题 —— HTML
  • 同为(TOWE)电源线让家用电器随心放置
  • 2023上半年数学建模竞赛汇总(报名时间、比赛时间、难易程度、含金量、竞赛官网)
  • RK3568平台开发系列讲解(驱动基础篇)SMP(Symmetrical Multi-Processing)
  • HIVE --- zeppelin安装
  • 数据分析中的变量解释
  • django-博客(一)
  • Shell高级——Linux中的文件描述符
  • 洗地机哪个品牌最好用?家用洗地机十大名牌