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

吴恩达深度学习复盘(16)决策树|节点纯度与熵

决策树简介

决策树算法在很多应用中被使用,机器学习比赛中会经常见到,但在流行病学领域未受到太多关注。

决策树示例 —— 猫的分类

以经营猫收养中心为例,通过动物的耳朵形状、脸型、是否有胡须等特征,来训练一个分类器判断动物是否为猫。数据集包含 10 个训练样本,其中 5 只猫和 5 只狗,输入特征为 X、R、B 三列(分别对应耳朵形状、脸型、是否有胡须),目标输出是判断该动物是不是猫(标签为 1 或 0) 。这些特征是分类值,即只取几个离散值,如耳朵形状为尖或软,脸型为圆或不圆,胡须为有或无,这是一个二元分类任务。

决策树的定义和结构

决策树是在训练数据集后学习算法输出的模型,形似一棵树。树中的每个椭圆或矩形称为一个节点,树的根在上面,叶子在下面(类似于室内悬挂植物)。树的最顶端节点是根节点,除了底部的盒子外,其他椭圆形节点称为决策节点,它们会查看特定的特征,并根据特征的值决定沿着树的左分支或右分支向下走。底部的矩形盒子节点称为叶节点,它们做出预测。

决策树的分类过程

以一个新的测试样本(猫,耳朵形状尖、脸型圆、有胡须)为例,从根节点开始,查看根节点内的特征(耳朵形状),根据样本中耳朵形状的值(尖),沿着左分支走,到达下一个节点。再查看该节点对应的特征(脸型),样本脸型为圆,继续沿着相应箭头向下,最后到达叶节点,叶节点推断这是一只猫并做出预测。

不同决策树的比较

不同的决策树在训练集、交叉验证集和测试集上的表现有所不同。决策树学习算法的任务就是从所有可能的决策树中,选择一个在训练集上表现良好,并且能很好地推广到新数据(如交叉验证集和测试集)的决策树。

建立决策树

构建决策树的步骤

第一步:选择根节点特征
  • 给定包含猫和狗的训练样本集,决策树学习的首要步骤是确定根节点使用的特征。假设选择耳朵形状特征,那么会依据该特征的值对所有十个训练样本进行划分,将耳朵形状为 “尖” 的五个样本移到左边,耳朵形状为 “软” 的五个样本移到右边。
第二步:处理左分支

专注于左分支,决定在该分支放置的节点以及用于分割的特征。假设选择脸型特征,对左分支的五个样本根据脸型特征的值进一步划分,把四个圆脸的样本移到左边,一个非圆脸的样本移到右边。此时发现左边四个样本都是猫,不再继续分裂,将其作为叶节点并做出 “是猫” 的预测;右边样本都不是猫(都是狗),创建叶节点预测 “不是猫” 。

第三步:处理右分支

在决策树的右分支重复类似过程。假设选择胡须特征,对右分支的五个样本根据胡须是否存在进行划分。划分后发现左右两边的节点要么全是猫,要么全不是猫,即达到了 “纯度”,于是创建叶节点分别做出 “是猫” 和 “不是猫” 的预测。

构建决策树的关键决策

特征选择

在每个节点(包括根节点、左分支和右分支的节点)都需要决定使用哪个特征进行分割。选择的目标是使分割后的左右子分支上的标签纯度尽可能高,纯度意味着子集中尽可能接近全是猫或全是狗。例如,若有 “动物是否有猫的 DNA” 这样的特征(实际没有),在根节点使用它进行分割,会使左右子集完全纯(一边全是猫,一边全不是猫)。而实际只有耳朵形状、脸型和胡须等特征,决策树学习算法需要在这些特征中选择能使左右子分支标签纯度最高的特征。下一个关于熵的视频将讨论如何估计不纯度以及如何最小化不纯度。

停止分裂的时机
  • 纯度标准:当节点中的样本要么全是猫,要么全是狗(即达到 100% 的纯度)时,自然地创建叶节点并做出分类预测。
  • 最大深度限制:可以设定决策树的最大深度作为参数,如果继续分割节点会使树的深度超过这个最大值,则停止分裂。节点的深度是指从根节点到达该特定节点所需经过的边的数量,根节点深度为 0,其下一层节点深度为 1,再下一层为 2,以此类推。限制树的深度可以防止树过于复杂,避免过拟合。
  • 纯度分数提升标准:如果分割节点后纯度分数(实际上是不纯度的减少)的提升低于某个值,即分割对纯度的改善不明显,为了保持树较小并降低过拟合风险,可能会停止分裂。
  • 样本数量阈值:如果节点中的样本数量低于某个阈值,例如在根节点按脸型特征分割后,右分支只有三个训练样本(一只猫和两只狗),为避免过度分割,可能决定不再继续分割,而是创建叶节点并做出 “不是猫” 的预测。

决策树算法的发展与特点

决策树算法是经过多位研究人员逐步改进发展而来的,不同研究人员提出了不同的改进方法,如不同的分裂标准和停止分裂的条件等。这使得算法在实际应用中表现良好,但从实现细节上看,感觉有很多不同部分和复杂的决策方式。虽然算法看似复杂凌乱,但各个部分组合起来形成了一个非常有效的学习算法。

熵与节点纯度

纯度的概念

如果样本集全是猫或全不是猫(即单类),则纯度很高。但当样本集处于两者之间,即存在不同类别的混合时,需要一种方法来量化其纯度。

熵的定义及示例

  • 定义:熵(ENTRPY)是对样本数据杂质的度量。对于一组包含6个样本(3只猫和3只狗)的集合,定义p_1为带有标签1(可理解为猫)的样本比例,在这个例子中p_1 = 3/6 = 0.5 。熵函数通常表示为H(p),其中横轴是p_1(样本中猫的比例),纵轴是熵的值。当p_1 = 0.5时,熵H(p_1) = 1,此时样本集最不纯(杂质值为1)。相反,当样本集要么全是猫要么全不是猫时,熵为0,即纯度最高。
  • 示例
    • 对于一组有5只猫和1只狗的样本,p_1 = 5/6 \approx 0.83,此时熵H(p) \approx 0.65 。
    • 当6个样本全是猫时,p_1 = 6/6 = 1,熵为0,说明从3只猫3只狗(p_1 = 0.5)到6只全是猫(p_1 = 1),杂质从1减少到0,纯度增加。
    • 对于一组有2只猫和4只狗的样本,p_1 = 2/6 = 1/3,熵约为0.92\,该样本集比5只猫1只狗的样本集更不纯,因为它更接近50 - 50的混合。
    • 当6个样本全是狗时,p_1 = 0,熵也为0。

熵函数的方程

p_1是样本中猫的比例,若样本中2/3是猫,则1/3不是猫。定义p_0为不是猫的样本比例,p_0 = 1 - p_1。熵函数H(p_1) = -p_1 \log_2(p_1) - p_0 \log_2(p_0) = -p_1 \log_2(p_1) - (1 - p_1) \log_2(1 - p_1)

计算熵时通常取以2为底的对数,这样能使曲线峰值等于1;若取以e为底的对数,函数只是垂直缩放但仍有效,不过数字解释起来较困难。当p_1p_0等于0时,按照惯例0 \log(0) = 0,能正确计算出熵为0。

熵与逻辑损失的关系

熵的定义与之前学过的逻辑损失的定义相似,这有其数学原理,但在本课程中不深入讨论,在构建决策树时应用熵的公式即可。

总结

熵函数是衡量样本数据杂质程度的指标,其值从0上升到1再下降到0,是样本中正例(如猫)比例的函数。还有其他类似的函数,如 GENI 标准,也可用于构建决策树。为简单起见,文章中重点关注熵准则,其适用于大多数应用。

决策树特征选择

构建决策树时特征选择需要通过熵和信息增益的方式处理,如何确定在决策树节点上使用哪个特征进行分割是关键所在。

特征选择的依据

在构建决策树时,每个节点选择分割特征的方法是基于该特征能减少熵(即减少杂质或最大化纯度)。在决策树学习中,熵的减少被称为信息增益。

计算信息增益的示例

  • 以识别猫为例:在构建识别猫的决策树的根节点时,考虑三个可能的分割特征:耳朵形状、脸型和胡须特征。
    • 耳朵形状特征:若按耳朵形状特征分割,左右分支各有5个样本,左边4只猫,p_1 = 4/5 = 0.8;右边1只猫,p_1 = 1/5 = 0.2。应用熵公式计算,左右分支的熵均约为0.72
    • 脸型特征:若按脸型特征分割,左边7个样本中有4只猫,p_1 = 4/7;右边3个样本中有1只猫,p_1 = 1/3。计算得左右分支的熵分别约为0.990.92,杂质度比按耳朵形状特征分割时高。
    • 胡须特征:若按胡须特征分割,左边p_1 = 3/4,右边p_1 = 2/6,并给出相应的熵值。
  • 加权平均的必要性
  • 为了比较这三种特征选择的效果,不能仅仅观察熵值,而需要取加权平均。因为一个节点中包含很多高熵的样本比只有几个高熵样本的情况更糟糕,即熵作为杂质的度量,数据集越大且越不纯,情况越差。所以要将左右分支的熵合并为一个数,通过取加权平均来实现,权重取决于进入左右分支的样本数量。
  • 计算加权平均熵
  • 以耳朵形状特征为例,10个样本中有5个去了左分支,5个去了右分支,则加权平均熵为5/10 \times 0.72 + 5/10 \times 0.72。同理可计算脸型特征和胡须特征分割时的加权平均熵。
  • 选择分割特征的方法:选择加权平均熵最小的特征作为分割特征,即选择能使左右分支平均加权熵最低的特征。

信息增益的计算及意义

  • 计算方式的调整:在实际构建决策树时,为遵循惯例,不直接计算加权平均熵,而是计算与不进行分割时相比熵的减少量。回到根节点,最初有5只猫和5只狗,p_1 = 5/10 = 0.5,根节点的熵H(0.5) = 1
  • 信息增益的定义:计算分割后左右分支的熵与根节点熵的差值,这个差值就是信息增益。例如,按耳朵形状特征分割时信息增益的计算结果是0.28,脸型特征是0.03,胡须特征是0.12。这些信息增益衡量了由于分割导致的熵减少量,因为根节点熵最初为1,分割后熵降低,两者的差值就是熵的减少量。
  • 信息增益的作用:信息增益用于决定是否继续分割。如果信息增益的减少量太小,低于阈值,就可能会决定不再分割,因为这可能只是不必要地增加树的大小并冒着过拟合的风险。在上述例子中,按耳朵形状特征分割时熵的减少量最大,所以会选择在根节点按耳朵形状特征进行分割。

信息增益的正式定义及公式

  • 符号定义W_{left}表示到达左分支的样本比例,W_{right}表示到达右分支的样本比例;P_{left}表示左子树中标签为正(猫)的样本比例,P_{right}表示右子树中标签为正的样本比例,P_{root}表示根节点中标签为正的样本比例。
  • 公式:信息增益定义为根节点的熵H(P_{root}) - W_{left} x H(P_{left})W_{right} x H(P_{right})。通过这个公式可以计算与选择任何特定特征进行节点分割相关的信息增益,然后从所有可能的特征中选择能提供最高信息增益的特征,这样有望增加决策树左右子分支中数据子集的纯度。

笔者注

本篇整理了决策树和节点熵的有关概念,在计算信息增益和选择分割特征后,接下来需要把这些内容整合到构建给定训练集决策树的整体算法中,这些在下一篇博客中整理。

相关文章:

吴恩达深度学习复盘(16)决策树|节点纯度与熵

决策树简介 决策树算法在很多应用中被使用,机器学习比赛中会经常见到,但在流行病学领域未受到太多关注。 决策树示例 —— 猫的分类 以经营猫收养中心为例,通过动物的耳朵形状、脸型、是否有胡须等特征,来训练一个分类器判断动…...

C++基础精讲-07

文章目录 1. const对象2. 指向对象的指针3. 对象数组4. c中const常见用法总结4.1 修饰常量4.2 修饰指针4.3 修饰函数参数4.4 修饰函数返回值4.5 修饰成员函数4.6 const对象 5. 赋值运算符函数(补充)5.1 概念5.2 默认赋值运算符函数局限5.3 解决办法 1. c…...

100个有用的AI工具 之 生成透明图像LayerDiffuse

Stable Diffusion是开源图像生成界的扛把子,最强的地方在于它的可控性,通过ControlNet,和一系列插件,可以非常精准地控制图像生成的需求。 今天介绍的是SD的一个插件LayerDiffuse,它可以帮助我们用SD生成透明的png图层。我们在用PS抠图的时候,对于头发、毛绒边这种图是非…...

springboot和springcloud的区别

1. ‌目的与功能‌ ‌1)Spring Boot‌: 主要用于快速构建独立的、生产级的 Spring 应用程序。它通过自动配置和嵌入式服务器等特性,简化了微服务的开发、启动和部署,使开发者能够专注于业务逻辑而非繁琐的配置。‌Spring Boot是一个快速开发的框架,旨在简化Java应用程序的开…...

前端操作document的小方法,主要功能-获取当前页面全部的a标签页,并根据链接中必要的字段进行判断,然后把这些链接放入iframe去打开

首先是一些小方法,有一个问题就是在不同源的页面中无法获取iframe中的dom const isInIframe window.parent ! window.self; console.log(是否在 iframe 中:, isInIframe); console.log(来源页面:, document.referrer); const isSame new URL(document.referrer).o…...

RocketMQ 03

今天是2025/04/14 21:58 day 20 总路线请移步主页Java大纲相关文章 今天进行RocketMQ 6,7,8 个模块的归纳 最近在忙毕设,更新有点慢,见谅 首先是RocketMQ 的相关内容概括的思维导图 6. 安全机制 6.1 ACL 访问控制 核心功能 权限分级:通过…...

基于项目管理的轻量级目标检测自动标注系统【基于 YOLOV8】

🐱 AILabeler 是一个轻量级目标检测标注系统,专为 YOLO 系列模型设计,支持图像上传、标注框管理、类别设置、自动标注(YOLOv8)、导出多格式训练数据等功能。 项目已经发布至https://github.com/as501226107/AILabeler&…...

针对 Java从入门到精通 的完整学习路线图、各阶段技术点、CTO进阶路径以及经典书籍推荐。内容分阶段展开,兼顾技术深度与职业发展

以下是针对 Java从入门到精通 的完整学习路线图、各阶段技术点、CTO进阶路径以及经典书籍推荐。内容分阶段展开,兼顾技术深度与职业发展。 一、学习路线图分阶段详解 阶段1:Java基础入门(3-6个月) 目标:掌握Java核心…...

深度学习总结(13)

选择损失函数 为问题选择合适的损失函数,这是极其重要的。神经网络会采取各种方法使损失最小化,如果损失函数与成功完成当前任务不完全相关,那么神经网络最终的结果可能会不符合你的预期。因此,一定要明智地选择损失函数&#xf…...

AI测试引擎中CV和ML模型的技术架构

技术架构概述 1. 数据采集层 此层负责收集各种类型的数据,为后续的模型训练和测试提供基础。对于CV模型,主要采集图像、视频数据,可来源于摄像头、图像数据库等;对于ML模型,采集结构化数据(如表格数据)、非结构化数据(如文本数据)等,数据来源包括业务系统日志、传感…...

业务架构发展历史及相关技术应用介绍

1,单体架构 企业处于发展初期阶段,业务的开发量与用户的访问量较少的情况下,通常情况会将业务编写在一个应用中,由一个web容器完成部署调用。如下图,一个应用中所有的功能模块写在一个war包中,功能模块的代…...

Java栈与队列深度解析:结构、实现与应用指南

一、栈与队列核心概念对比 特性栈 (Stack)队列 (Queue)数据原则LIFO(后进先出)FIFO(先进先出)核心操作push(入栈)、pop(出栈)、peek(查看栈顶)offer(入队)、poll(出队)、peek(查看队首)典型应用函数调用栈、括号匹配、撤销操作任…...

CentOS DVD完整版与Minimal版的区别

文章目录 一、体积与内置软件:从“大而全”到“小而精”二、安装体验:开箱即用 vs 高度定制三、适用场景:桌面与服务器的分水岭四、后续配置:时间成本的权衡五、性能与资源占用六、推荐新手下载完整版建议: 在 CentOS…...

AI日报 - 2025年4月13日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI CFO称AGI可能已到来 Sarah Friar透露Sam Altman认为AGI潜力尚未完全发挥,引发行业热议 ▎💼 商业动向 | OpenAI开发新型AI工程师A-SWE 超越Copilot,能独立完成应用构建、…...

有哪些基于solidity的应用

🔥 Solidity 常见应用分类(附例子) 🏦 1. DeFi(去中心化金融) Solidity 的最大应用场景之一。 项目功能示例合约逻辑Uniswap去中心化交易所(AMM)流动性池、定价算法、swap函数Aave /…...

mybatis--多对一处理/一对多处理

多对一处理(association) 多个学生对一个老师 对于学生这边,关联:多个学生,关联一个老师[多对一] 对于老师而言,集合,一个老师有多个学生【一对多】 SQL: 测试环境搭建 1.导入依…...

中兴B860AV3.2-U-晶晨S905L3B芯片-安卓9.0-2+8G-线刷固件包

中兴B860AV3.1-U/B860AV3.2-U--晶晨S905L3B芯片-安卓9.0-28G-线刷固件包 线刷方法:(新手参考借鉴一下) 1、准备好一根双公头USB线刷刷机线,长度30-50CM长度最佳,同时准备一台电脑; 2、电脑上安…...

资源分配不均,如何优化

优化资源分配需要关注资源需求评估精准性、资源调度合理性、实时监控与反馈机制、沟通协调的高效性以及持续改进的管理理念。其中,资源需求评估精准性最为关键。精准的资源需求评估意味着对项目各阶段所需资源的准确把控,这能有效防止资源过剩或短缺现象…...

Kimi-VL 解读:高效 MoE 视觉语言模型VLM,兼顾长上下文与高分辨率

写在前面:一起读多模态大模型Kimi-VL Moonshot AI 推出了 Kimi-VL,一个高效的、开源的、基于混合专家(MoE)架构的视觉语言模型。Kimi-VL 旨在解决上述痛点,它具备以下几个核心特点: 高效 MoE 架构:语言解码器采用 MoE 架构,在保持强大能力的同时,显著降低了推理时的激…...

2024团体程序设计天梯赛L3-1 夺宝大赛

L3-037 夺宝大赛 分数 30 作者 陈越 单位 浙江大学 夺宝大赛的地图是一个由 nm 个方格子组成的长方形,主办方在地图上标明了所有障碍、以及大本营宝藏的位置。参赛的队伍一开始被随机投放在地图的各个方格里,同时开始向大本营进发。所有参赛队从一个方格…...

SpringBoot DevTools:开发工具与热部署机制

文章目录 引言一、Spring Boot DevTools概述二、自动重启机制2.1 工作原理2.2 自定义重启触发器 三、LiveReload支持3.1 浏览器自动刷新3.2 与前端框架集成 四、属性默认值调整4.1 缓存配置4.2 日志配置 五、远程开发支持5.1 配置远程应用5.2 使用远程客户端 总结 引言 在Java…...

PyCharm 开发工具 修改字体大小及使用滚轮没有反应

PyCharm 开发工具 修改字体大小及使用滚轮没有反应 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是有学习/理解关联性,希望对您有用~ PyCharm 开发工具 修改字体大小及…...

小刚说C语言刷题——每日一题东方博宜1000熟悉OJ环境

1.题目描述 2.参考代码(C语言版&#xff09; #include <stdio.h> int main(void) { //定义两个整型变量num1和num2 int num1,num2; int sum;//定义两个数的和sum //下面语句表示输入两个数字 scanf("%d%d",&num1,&num2); sumnum1num…...

Ubuntu安装Docker容器,通过Tomcat部署项目

温馨提示&#xff1a;本教程不是最完美的&#xff0c;只能说是填鸭式教育&#xff0c;仅仅让你快速部署Docker的tomcat项目。 *******命令行需要一行一行操作哟&#xff01;&#xff01;&#xff01;******* 一、检查Ubuntu本地的Tomcat能发正常打开项目 1.1 检查本地tomcat是…...

ubuntu22.04安装zabbix7.0

一、安装repository wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0ubuntu24.04_all.deb dpkg -i zabbix-release_latest_7.0ubuntu24.04_all.deb apt update二、安装Zabbix server&#xff0c;Web前端&#xff0c;ag…...

AIGC工具平台-建筑平面图3D渲染

本模块是一款智能化的建筑设计辅助工具&#xff0c;可将任意房屋平面设计图快速转换为高品质3D渲染效果图&#xff0c;让建筑设计更加直观、高效。用户无需复杂的3D建模操作&#xff0c;仅需上传房屋平面图&#xff0c;系统即可一键生成符合实际尺度的3D渲染效果&#xff0c;精…...

OpenGL学习笔记(立方体贴图、高级数据、高级GLSL)

目录 立方体贴图天空盒环境映射斯涅尔定律&#xff08;Snells Law&#xff09;菲涅尔效应&#xff08;Fresnel Effect&#xff09;动态环境贴图 高级数据分批顶点属性复制缓冲 高级GLSL顶点着色器变量片段着色器变量接口块Uniform缓冲对象Uniform块布局使用Uniform缓冲测试 Git…...

嵌入式进阶:如何选择合适的开发平台?

随着现代工业、物联网以及人工智能技术的迅速发展&#xff0c;嵌入式系统已经由简单的控制器向复杂的高性能系统迈进。从传统家电到智能机器人、从自动驾驶汽车到工业自动化&#xff0c;每一项应用都对嵌入式系统的响应速度、运行稳定性和能耗管理提出了更高要求。在这种背景下…...

CVPR‘25 SOTA——GoalFlow论文精读

1&#xff09;第一遍___粗读 Q: 这篇论文试图解决什么问题&#xff1f; A: 这篇论文提出了一个名为 GoalFlow 的端到端自动驾驶方法&#xff0c;旨在解决自动驾驶场景中高质量多模态轨迹生成的问题。具体而言&#xff0c;它试图解决以下问题&#xff1a; 轨迹选择的复杂性&am…...

vue3 onMounted 使用方法和注意事项

基础用法 / 语法糖写法 <script> import { onMounted } from vue;// 选项式 API 写法 export default {setup() {onMounted(() > {console.log(组件已挂载);});} } </script><script setup> onMounted(() > {console.log(组件已挂载); }); </scrip…...

【ubuntu】linux开机自启动

目录 开机自启动&#xff1a; /etc/rc.loacl system V 使用/etc/rc*.d/系统运行优先级 遇到的问题&#xff1a; 1. Linux 系统启动阶段概述 方法1&#xff1a;/etc/rc5.d/ 脚本延时日志 方法二&#xff1a;使用 udev 规则来触发脚本执行 开机自启动&#xff1a; /etc/…...

OpenCV day2

Matplotlib相关知识 Matplotlib相关操作&#xff1a; import numpy as np from matplotlib import pyplot as pltx np.linspace(0, 2 * np.pi, 100) y1 np.sin(x) y2 np.cos(x)# 使用红色虚线&#xff0c;圆点标记&#xff0c;线宽1.5&#xff0c;标记大小为6绘制sin plt.p…...

OpenCV 图形API(31)图像滤波-----3x3 腐蚀操作函数erode3x3()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用3x3矩形结构元素腐蚀图像。 该函数通过使用中心作为锚点的3x3矩形结构元素来腐蚀源图像。腐蚀操作可以应用多次&#xff08;迭代&#xff0…...

机器学习概述自用笔记(李宏毅)

机器学习概述 机器学习即找一个复杂的人类写不出来的函数&#xff0c;把输入&#xff08;向量&#xff0c;矩阵&#xff0c;序列&#xff09;转换为输出。 regression&#xff1a;输出是一个数值&#xff08;预测PM2.5的数值&#xff09; classification&#xff1a;选择设置…...

大数据面试问答-Spark

1. Spark 1.1 Spark定位 "Apache Spark是一个基于内存的分布式计算框架&#xff0c;旨在解决Hadoop MapReduce在迭代计算和实时处理上的性能瓶颈。 1.2 核心架构 Spark架构中有三个关键角色&#xff1a; Driver&#xff1a;解析代码生成DAG&#xff0c;协调任务调度&a…...

UE5 设置父物体和解除父子关系(移除子物体)

文章目录 设置父物体解除父子关系 Acotor类似于untiy的objecttransfrom&#xff0c;可以用来进行父子操作 设置父物体 Actor attach to Actor节点 解除父子关系 Detach From Actor...

Git - 怎么把当前修改追加到前面某个commit中

怎么把当前修改追加到前面某个commit中 git log commit b7cb11b53388d410d07e3b3084c67274cee4cdad (HEAD -> hotfix/task-108344, origin_dbackup/hotfix/task-108344) Author: aaa <aaammm.com> Date: Thu Mar 27 15:08:32 2025 0800Fix #108344: add bbbcommit …...

【HFP】蓝牙 HFP 协议状态通知机制研究

目录 一、状态通知体系架构 1.1 核心功能矩阵 1.2 三层控制体系 1.3 角色分工 1.4 协议栈层级 二、核心AT命令解析 2.1 ATCMER&#xff1a;指示器状态报告控制 2.2 ATBIA&#xff1a;指示器激活控制 2.3 CIEV&#xff1a;未请求结果码 三、关键功能实现机制 3.1 注册…...

unity100天学习计划

以下是一个为期100天的Unity学习大纲,涵盖从零基础到独立开发完整游戏的全流程,结合理论、实践和项目实战,每天学习2-3小时: 第一阶段:基础奠基(Day 1-20) 目标:掌握Unity引擎基础与C#编程 Day 1-5:引擎入门 安装Unity Hub和Unity Editor(LTS版本)熟悉Unity界面:S…...

STM32电机库 电机控制特性

ST MC FW库提供FOC和六步法两种电机控制方式。这使得它能够驱动永磁同步电机 (PMSM) 和无刷直流电机 (BLDC)。FOC 更适合 PMSM,而六步法更适合 BLDC 电机。该固件可以驱动内嵌式PMSM 和标贴式PMSM。 ST Motor Control 固件库提供以下功能: FOC SVPWM 生成: 可配置的 PW…...

MySQL数据库 - 事务

事务 此笔记参考黑马教程&#xff0c;仅学习使用&#xff0c;如有侵权&#xff0c;联系必删 文章目录 事务1. 事务简介2. 事务操作2.1 事务操作 - 方式一2.2 方式二代码实现 3. 事务四大特性&#xff08;ACID&#xff09;4. 并发事务问题5. 事务隔离级别代码实现 总结 1. 事务…...

火山引擎旗下的产品

用户问的是火山引擎旗下的产品&#xff0c;我需要详细列出各个类别下的产品。首先&#xff0c;我得确认火山引擎有哪些主要业务领域&#xff0c;比如云计算、大数据、人工智能这些。然后&#xff0c;每个领域下具体有哪些产品呢&#xff1f;比如云计算方面可能有云服务器、容器…...

用 Python 从零构建异步回显服务器

简介 让我们从 0 开始&#xff0c;搭建一个异步服务输出服务器。 套接字 套接字&#xff08;socket&#xff09;&#xff0c;是不同计算机中实现通信的一种方式&#xff0c;你可以理解成一个接口&#xff0c;它会在客户端和服务端建立连接&#xff0c;一台发送数据&#xff…...

【3D文件】可爱小鹿3D建模,3D打印文件

【3D文件】可爱小鹿3D建模&#xff0c;3D打印文件 免费下载&#xff0c;下载链接&#xff1a; 3D文件可爱小鹿3D建模&#xff0c;可爱小鹿建模仿真&#xff0c;小鹿仿真设计&#xff0c;3D打印文件&#xff0c;免费下载资源-CSDN文库 资源下载&#xff1a; 3D文件可爱小鹿3D…...

RabbitMQ 优先级队列详解

本文是博主在记录使用 RabbitMQ 在执行业务时遇到的问题和解决办法&#xff0c;因此查阅了相关资料并做了以下记载&#xff0c;记录了优先级队列的机制和使用要点。 本文为长文&#xff0c;详细介绍了相关的知识&#xff0c;可作为学习资料看。 文章目录 一、优先级队列介绍1、…...

串口通信简述

一.串口的特点 1.全双工异步通信 全双工指通信双方可以同时进行数据的发送和接收操作。 异步通信是指通信双方不使用共同的时钟信号来同步数据传输&#xff0c;而是通过特殊的信号或约定来标识数据的开始和结束 2.数据字长度可编程&#xff08;8 位或 9 位&#xff09; 不…...

【2025年五一数学建模竞赛A题】完整思路和代码

1.问题背景与重述 2.解题思路分析 2.1 问题一的分析 问题一假设无人机以平行于水平面的方式飞行并投放物资&#xff0c;可以将物资的运动 类比成平抛运动&#xff0c;由于物资的重量较大&#xff0c;因此不能简单的看成质点&#xff0c;还要考虑物资 的重量。 2.1.1本题要求给…...

为了四季度的盈利,李斌的换人还在继续

李斌对蔚来和乐道人事调整还在继续。 4月10日&#xff0c;蔚来发布内部邮件宣布大量人事变动。 蔚来方面&#xff1a; 原用户关系&#xff08;UR&#xff09;负责人沈泓因个人原因将离开公司。 任命孙明担任用户关系&#xff08;UR&#xff09;负责人&#xff0c;向高级副总…...

Pytest 自动化测试框架详解

Pytest和Unittest测试框架的区别&#xff1f; 如何区分这两者&#xff0c;很简单unittest作为官方的测试框架&#xff0c;在测试方面更加基础&#xff0c;并且可以再次基础上进行二次开发&#xff0c;同时在用法上格式会更加复杂&#xff1b;而pytest框架作为第三方框架&#x…...

sqli-labs靶场 less 9

文章目录 sqli-labs靶场less 9 时间盲注 sqli-labs靶场 每道题都从以下模板讲解&#xff0c;并且每个步骤都有图片&#xff0c;清晰明了&#xff0c;便于复盘。 sql注入的基本步骤 注入点注入类型 字符型&#xff1a;判断闭合方式 &#xff08;‘、"、’、“”&#xf…...