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

决策树基本介绍

一、 介绍

1、概念:决策树通过对训练样本的学习,并建立分类规则,然后依据分类规则,对新样本数据进行分类预测,属于有监督学习。
2、核心:所有数据从根节点一步一步落到叶子节点。

二、结点

1、根结点:第一个结点
2、非叶子结点:中间结点
3、叶子结点:最终结点

三、分类标准

1、ID3算法:
(1)、衡量标准:
熵值:表示随机变量不确定性的度量,或者说是物体内
部的混乱程度。
(2)、熵值计算公式:

(3)、举例:
A集合:[1, 1, 1, 1, 1, 1,1,1,2,2]
B集合:[0,1,2,3,4, 5,6,7,8,9]
A集合熵值:-2/10log2(2/10)-8/10log2(8/10)=0.722
B集合熵值:-1/10*log2(1/10)*10=3.322
2、C4.5算法:
(1)、衡量标准:
信息增益率
3、CART算法:
(1)、衡量标准:
基尼系数

三、剪枝

1、为什么要剪枝
防止过拟合:例如有1000条数据,构建出来的树有1000条路径,也就是每
个样本数据,就构建一条路径。此时会存在过拟合,当预测新的数据
时,如果不在树的路径中,将无法判断出结果
2、如何剪枝
(1)、预剪枝
a.限制树的深度
b.限制叶子节点的个数以及叶子节点的样本数
c.基尼系数
(2)、后剪枝
先让决策树完整生长,再从底部开始删除不必要的分支。

四、代码实现

题目:天气预测是否打球
数据:

实现过程
1、导入库

importpandasaspdfromsklearn.treeimportDecisionTreeClassifierfromsklearn.preprocessingimportLabelEncoderfromsklearn.treeimportplot_treeimportmatplotlib.pyplotasplt

2、创建数据

data=pd.DataFrame({"天气":["晴朗","晴朗","阴天","雨天","雨天","雨天","阴天","晴朗","晴朗","雨天"],"温度":["高","高","高","中","低","低","低","中","低","中"],"湿度":["高","高","高","高","正常","正常","正常","高","正常","正常"],"打球":["否","否","是","是","是","否","是","否","是","是"]})print(data)

3、数据编码

encoder=LabelEncoder()forcolindata.columns:data[col]=encoder.fit_transform(data[col])print(data)

4、划分特征和标签

X=data.drop("打球",axis=1)y=data["打球"]

5、建立决策树模型

tree=DecisionTreeClassifier(criterion="entropy")

6、训练模型和预测

tree.fit(X,y)test=pd.DataFrame([[encoders["天气"].transform(["晴朗"])[0],encoders["温度"].transform(["低"])[0],encoders["湿度"].transform(["正常"])[0]]],columns=["天气","温度","湿度"])result=tree.predict(test)

7、转换回中文

print("预测结果:")print(encoders["打球"].inverse_transform(result)

8、设置中文字体

plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=False

9、绘制树

plt.figure(figsize=(15,5))plot_tree(tree,feature_names=["天气","温度","湿度"],class_names=["不打球","打球"],filled=True)plt.show()

10、效果展示

http://www.jsqmd.com/news/1298130/

相关文章:

  • 用Jenkins搭建Qt项目自动编译流水线(实战指南)
  • 赛马娘角色反应集制作指南:从性格挖掘到剪辑技巧
  • Qoder额度管理:从API资源控制到工作流集成的工程实践
  • 三菱FX3U-32M PLC与GX Works2通讯连接及梯形图编程入门指南
  • 如何构建一个免费开源的小说阅读器:ReadCat完整指南
  • Java强制类型转换全解析:从基础规则到实战避坑指南
  • 【AI+SQL协同优化黄金公式】:SELECT × INDEX × HINT × COST MODEL × 人工干预 = 100%可投产SQL(仅限内部团队验证版)
  • Python读取邮件附件?这招绝了,老板看了都直呼内行
  • 2026年7月昆山双层倍速链/昆山单层倍速链厂家推荐案例_昆山皇宝机械设备有限公司 - 行业平台推荐
  • 2026年7月江苏非标装备/江苏电子制造装备厂家优选推荐_苏州艾纽智能科技有限公司 - 行业平台推荐
  • 大语言模型选型部署实战:从硬件匹配到任务优化的全流程指南
  • 从2.5D到3D IC封装:TSV与中介层技术如何重塑高性能芯片
  • 数组指针---指向数组的指针
  • Sunshine游戏串流:解放你的高性能PC,打造个人专属云游戏服务器
  • AI语音转文字,会议记录不再愁,录音秒变文档
  • SQL 左连接和右连接
  • 摩托罗拉Edge S获取Root权限与NFC门禁卡模拟完整实战指南
  • 斐波那契数列非递归C语言竟暗藏这般玄机
  • 股票实时行情API选型指南:从免费到付费,构建稳定数据获取模块
  • 基于14B开源大模型的威胁狩猎自动化实践:从ATTCK映射到检测规则生成
  • C++字符编码终极指南:从乱码根源到UTF-8最佳实践
  • 2026年7月昆山360 度新能源电池箱体翻转组装线/动力电池新能源电池箱体翻转组装线厂家厂家推荐_昆山皇宝机械设备有限公司 - 品牌宣传支持者
  • 智能车竞赛成绩单深度解析:从硬件选型到算法优化的实战指南
  • 2026年7月江苏注塑/苏州精密注塑源头厂家推荐_苏州艾纽智能科技有限公司 - 品牌宣传支持者
  • 深度 | AI 可观测性:从谁在用我的 API到谁在管我的 Agent——LLM 监控赛道的整合时刻
  • 51单片机PWM舵机控制:Proteus仿真与Keil编程全流程解析
  • 电阻实战应用:从限流分压到高频采样,四大角色解析与选型指南
  • 2026年零基础新手电脑录音转文字APP推荐 避坑后就能直接上手
  • 昆泰芯 KTH2582|2.7~32V/-40~125℃三档灵敏度锁存霍尔开关 SOT23-3L/TO92S 电机流量计电动工具场景分享
  • 二极管应用电路实战指南:从整流到保护,五大经典电路深度解析