掌控未来:用决策树算法揭秘胜利者的必胜策略!

掌控未来:用决策树算法揭秘胜利者的必胜策略!

    • 一、引言
      • 1.1. 决策树的定义
      • 1.2. 发展历程
      • 1.3. 当前应用概况
      • 1.4. 本文内容安排
    • 二、决策树的基本概念
      • 2.1 节点和叶节点
      • 2.2 决策树的结构
        • 结构图示
        • 不同结构的决策树
    • 三、决策树的算法原理
      • 3.1 基本思想
      • 3.2 核心算法
        • ID3算法
        • C4.5算法
        • CART算法
    • 四、特征选择和剪枝策略
      • 4.1 特征选择的方法
      • 4.2 剪枝的必要性
      • 4.3 剪枝技术
    • 五、决策树学习算法的实现步骤
      • 5.1 数据预处理
      • 5.2 特征选择
      • 5.3 决策树的构建
      • 5.4 决策树的剪枝
      • 5.5 模型评估与选择
    • 六、案例实现
      • 6.1 数据集介绍
      • 6.2 数据预处理
      • 6.3 决策树模型构建
      • 6.4 结果分析
    • 七、总结与展望
      • 7.1 总结决策树算法的核心要点
      • 7.2 探讨决策树算法的局限性和改进方向
      • 7.3 展望未来决策树算法可能的发展趋势

一、引言

在这里插入图片描述

在机器学习领域,决策树是一种非常流行且易于理解的预测模型,它通过模拟人类决策过程来解决分类和回归问题。决策树能够通过从顶部到底部的方式,每一步都做出最佳判断来达到预测目的。它的工作原理极其类似于我们对生活中各种选择的决策过程,例如,决定购买哪一种产品,或者确定哪种治疗方案更适合特定的病情。决策树通过分析输入数据的特征,逐步将数据集分割成更纯的子集,每个子集都关于目标变量具有更高的一致性。

1.1. 决策树的定义

决策树是一种流程图式的树结构,其每一个内部节点表示一个属性上的测试,每个分支代表一个测试输出,而每个叶节点代表一种类别。决策树的构建旨在将数据集划分为与叶节点相关的尽可能纯的子集,以达到准确预测未知样本分类的目的。

1.2. 发展历程

决策树算法的起源可以追溯到上世纪60年代,由Hunt等人提出的CLS(概念学习系统)。随后,多种决策树算法如ID3、C4.5、CART等被相继提出,它们在处理大数据集、提高计算效率和剪枝优化等方面做出了重要改进。近年来,随着计算机算力的增强和大数据技术的发展,决策树算法得到了广泛的应用,并成为许多集成学习方法的基础,如随机森林和梯度提升树等。

1.3. 当前应用概况

决策树因其模型易于理解、推理过程清晰以及能有效处理非线性关系等优点,在金融风险评估、生物信息学、医疗诊断、客户细分等众多领域得到了广泛应用。商业分析师经常利用决策树对顾客进行分类,以制定不同的市场策略;医生可能会用它来判断病人是否属于某个疾病的风险组别;数据科学家使用决策树来识别最影响客户流失的关键因素。

1.4. 本文内容安排

在接下来的章节中,我们将深入探讨决策树的基本概念,包括节点和结构的理解。之后,我们将介绍决策树的核心算法原理,包括不同算法的差异性及其适用场景。特征选择和剪枝策略是构建高效决策树的关键步骤,我们将详细讨论这些技术。最后,通过案例实现,我们将展示如何应用决策树算法解决实际问题,并对结果进行分析。

二、决策树的基本概念

2.1 节点和叶节点

在决策树中,节点是构成树的基本单元。每个节点代表一个决策点或一次属性测试。在构建决策树时,从根节点开始,通过一系列的属性测试,将数据集分割成不同的子集,每个子集对应于一个分支,最终到达下一层的节点。这一过程递归进行,直到满足停止条件(如节点中的样本属于同一类别、达到预设的最大深度等),此时该节点成为叶节点

叶节点是决策树的末端节点,不再进行任何分割。在分类问题中,叶节点代表了最终的分类结果;在回归问题中,它可能是一个连续值的平均或预测值。简而言之,叶节点是决策路径的终点,代表了对数据进行一系列决策后的输出结果。

2.2 决策树的结构

结构图示

决策树的结构通常以图形方式表示,其中每个内部节点表示一个属性上的测试,每个分支代表测试的一个输出,而每个叶节点代表一种决策结果。这种结构类似于流程图,从上到下阅读,可以直观地理解决策过程。

    决策树示例结构图┌── 特征1 ── ┐│             ├── 值1 ── 叶节点(结果1)│             └── 值2 ── 叶节点(结果2)└── 特征2 ── ┐├── 值1 ── 叶节点(结果3)└── 值2 ── 叶节点(结果4)
不同结构的决策树
  • 二叉树 (Binary Tree):在二叉决策树中,每个内部节点恰好有两个子节点,对应于属性测试的“是”和“否”两种结果。这种结构简单明了,易于实现和维护,但在处理多于两个输出的属性时可能不够灵活。

  • 多叉树 (Multiway Tree):与二叉树不同,多叉树的节点可以有多个子节点,每个子节点对应属性测试的一个可能输出。这种结构适用于具有多个输出的属性,能够提供更丰富的决策路径。然而,它可能导致树过于复杂,难以解释和维护。

在实际使用中,选择哪种类型的决策树取决于具体问题的需求、数据的复杂性以及期望的模型性能。例如,对于具有大量离散属性的问题,使用多叉树可能更合适;而对于只有少数几个关键属性的情况,二叉树可能更加简洁有效。

决策树的构建通常遵循特定的算法,如ID3、C4.5和CART等,这些算法在如何处理属性选择、剪枝策略等方面有所不同,但都旨在生成一个既准确又泛化能力强的模型。通过调整参数(如最大深度、最小分割大小等),可以在模型复杂度和性能之间找到平衡,避免过拟合或欠拟合的问题。

三、决策树的算法原理

3.1 基本思想

决策树是一种监督学习算法,主要用于分类问题,但也可以用于回归。它通过递归地将数据集分割为不同的子集来构建模型,目标是使每个子集中的数据尽可能属于同一类别。以下是其基本思想的详细描述:

特征选择与数据集分割: 决策树通过评估每个特征对数据进行划分的有效性来选择特征。对于每个特征,算法寻找一个分割点(或多个分割点),使得根据该特征值将数据集分为子集后,子集中的数据项尽可能具有相同的标签。例如,如果有一个数值型特征“年龄”,则可能的分割点是任何两个不同数据项的年龄值的中间值。

递归划分: 一旦选定了最佳特征和相应的分割点,数据集就被分为几个子集。然后,算法对每个子集重复上述过程,即继续选择新的特征和分割点来进一步细分数据。这个过程递归进行,直到满足停止条件(如节点中的数据都属于同一类别、达到预设的最大深度等)。

3.2 核心算法

ID3算法

信息增益的概念: ID3算法使用信息增益作为特征选择的标准。信息增益衡量在给定特征下数据集的纯度提高的程度。计算信息增益首先需要计算数据集的熵,然后减去考虑特定特征时各子集的加权熵。

使用信息增益选择特征: 在每次迭代中,ID3算法计算所有特征的信息增益,并选择增益最大的特征来分割数据。这种方法优先选择能够最大程度减少数据集不确定性的特征。

C4.5算法

信息增益比的概念: C4.5算法是ID3的改进版本,引入了信息增益比来解决偏向于选择取值多的特征的问题。信息增益比是正则化的信息增益,用分裂信息(即熵的减少量)来除以原始信息增益。

处理连续属性: C4.5可以处理连续属性,方法是将连续属性的值排序,然后测试每个相邻值对之间的分割效果,选择最佳的分割点。

CART算法

基尼指数的概念: CART算法使用基尼指数来度量数据集的不纯度。基尼指数越低,数据集的纯度越高。CART在每个节点上计算所有可能的分割方案的基尼指数,选择具有最低基尼指数的分割方案。

二叉树的构建方法: 不同于ID3和C4.5可能产生多叉树,CART总是生成二叉树。在处理连续属性时,CART也采用类似的方法寻找最佳分割点,但其目标是最小化基尼指数而不是信息增益。

这些算法各有特点,适用于不同类型的数据和任务需求。ID3简单直观,但在处理有大量取值的属性时可能会遇到问题;C4.5通过信息增益比解决了这一问题,并且可以处理连续属性;CART通过使用基尼指数提供了另一种优化目标,通常用于构建二叉决策树,适合处理大规模数据集。

四、特征选择和剪枝策略

4.1 特征选择的方法

决策树算法中,特征选择是构建高效且准确模型的关键步骤。它涉及到在每个节点上选择最优的特征来分割数据。以下是几种常用的特征选择方法:

  • 信息增益:这种方法基于信息论中熵的概念,用于衡量某个特征对数据集进行分类的能力。具体来说,信息增益计算了在考虑某个特征前后,数据集的不确定性(即熵)降低了多少。具有最高信息增益的特征被认为是最佳的分割特征。

  • 信息增益比:信息增益比是对信息增益的一种改进,它考虑了特征取值数目的影响。通过除以特征的固有值(即该特征的熵),信息增益比旨在惩罚那些取值较多的特征,从而避免过分偏好这些特征。

  • 基尼指数:基尼指数用于衡量一个随机选取的数据点被分错类别的概率。在决策树的构建过程中,基尼指数用于评估数据的不纯度,较低的基尼指数意味着更纯净的子集。因此,选择具有最小基尼指数的特征作为分割标准。

4.2 剪枝的必要性

决策树的剪枝是为了防止过拟合问题,提高模型的泛化能力。过拟合是指模型在训练数据上表现很好,但在新数据上的表现却很差,这是因为模型过于复杂,学习到了训练数据中的噪声和异常值。

  • 过拟合问题的介绍:过拟合通常发生在模型结构过于复杂时,例如决策树的深度过大或节点过多。这样的模型能够完美地分割训练数据,但往往失去了对未见样本的预测能力。过拟合的模型不仅泛化性能差,而且可能导致解释性降低。

4.3 剪枝技术

为了解决过拟合问题,决策树采用了剪枝策略,这可以分为预剪枝和后剪枝两种方法:

  • 预剪枝:预剪枝是一种提前停止树生长的策略。它在树的生长过程中设定一些限制条件,如最大深度、最小叶子节点数或分裂所需的最小样本量等。一旦达到这些限制条件,即使进一步分裂可以降低不纯度,也会停止分裂。预剪枝的优点是可以显著减少计算成本,但缺点是可能过早地停止了树的生长,导致欠拟合。

  • 后剪枝:后剪枝是在完全生长的决策树基础上进行的剪枝过程。它首先允许决策树充分生长,然后根据一定的标准(如验证集上的误差)删除某些子树并用叶子节点替代它们。后剪枝的优点是可以充分利用数据信息,缺点是计算成本较高,因为需要先生成完整的决策树再进行剪枝。

总之,特征选择和剪枝策略是决策树算法中至关重要的组成部分,它们直接影响到模型的性能和泛化能力。通过精心选择特征并适当剪枝,可以构建出既准确又高效的决策树模型。

五、决策树学习算法的实现步骤

5.1 数据预处理

数据预处理是决策树学习算法的第一步,主要包括数据清洗、数据转换和数据规范化等步骤。数据清洗主要是去除数据集中的噪声和异常值,数据转换是将非数值型特征转换为数值型特征,数据规范化是将数值型特征进行归一化处理,使其在同一尺度上。这些步骤可以使得数据更适合用于训练决策树模型。

5.2 特征选择

特征选择是决策树学习算法的第二步,主要是从原始特征中选择出对目标变量影响最大的特征。特征选择的方法有很多,如信息增益、卡方检验、互信息等。特征选择的目的是减少模型的复杂度,提高模型的泛化能力。

5.3 决策树的构建

决策树的构建是决策树学习算法的核心部分,主要包括节点分裂、剪枝和生成规则等步骤。节点分裂是根据特征选择的结果,选择一个最优的特征进行分裂,形成一个新的节点。剪枝是为了解决过拟合问题,通过删除一些不重要的节点来简化决策树。生成规则是将决策树转化为一组if-then规则,用于预测新的样本。

5.4 决策树的剪枝

决策树的剪枝是决策树学习算法的重要步骤,主要包括预剪枝和后剪枝两种方法。预剪枝是在决策树构建过程中,提前停止树的生长,防止过拟合。后剪枝是在决策树构建完成后,通过删除一些不重要的节点来简化决策树。剪枝的目的是在保证模型精度的同时,提高模型的泛化能力。

5.5 模型评估与选择

模型评估与选择是决策树学习算法的最后一步,主要包括模型评估、模型选择和模型优化等步骤。模型评估是通过一些评价指标(如准确率、召回率、F1值等)来评价模型的性能。模型选择是根据模型评估的结果,选择一个最优的模型。模型优化是通过调整模型的参数,进一步提高模型的性能。

以上就是决策树学习算法的主要实现步骤,每一步都是为了提高模型的性能和泛化能力。在实际应用中,我们需要根据具体的问题和数据,灵活运用这些步骤,以达到最好的效果。

六、案例实现

6.1 数据集介绍

本文选用了UCI机器学习库中的“Wine”数据集作为案例实现的依据。该数据集包含了来自意大利同一地区的三种不同品种葡萄酒的化学成分分析结果,共有178个样本,每个样本包含13个特征变量(如酒精度、镁含量、颜色强度等),以及一个类别标签,即葡萄酒的种类。此数据集因其特征丰富、结构清晰,常被用于分类算法的研究和教学。

6.2 数据预处理

在数据预处理阶段,首先对数据集进行了缺失值处理。由于“Wine”数据集较为完整,缺失值较少,因此采用均值填充的方法对少数缺失的特征值进行补充。接着,针对数据集中的类别变量,使用独热编码(One-Hot Encoding)将文本标签转换为数值型数据,以便后续模型能够处理。例如,将葡萄酒种类从字符串格式转换为数值型的向量表示。

6.3 决策树模型构建

本案例使用scikit-learn库来构建决策树模型。首先,从sklearn.tree导入DecisionTreeClassifier类,然后实例化该类以创建决策树分类器对象。在参数调优方面,通过网格搜索(GridSearchCV)方法对决策树的最大深度、最小叶子节点数等关键参数进行优化,以提高模型的泛化能力。此外,还设置了随机种子以确保实验的可重复性。

6.4 结果分析

在模型训练完成后,进行了一系列的结果分析。首先是模型准确性评估,通过划分数据集为训练集和测试集,使用交叉验证的方式计算模型在测试集上的准确率、召回率和F1分数等指标。其次,利用ROC曲线分析模型的性能,计算不同类别的AUC值,从而评估模型对不同葡萄酒种类的区分能力。最后,通过特征重要性分析,探讨各个特征对模型预测结果的影响程度,这有助于理解哪些化学成分对于区分不同种类的葡萄酒更为关键。

综上所述,本案例详细介绍了使用UCI机器学习库中的“Wine”数据集来实现决策树模型的全过程,包括数据预处理、模型构建及参数调优、以及结果分析等关键环节。通过本案例的实践,可以深入理解决策树算法在实际应用中的表现和潜力,同时也展示了数据科学项目的典型工作流程。

七、总结与展望

7.1 总结决策树算法的核心要点

决策树算法以其模型透明、易于理解的特点被广泛应用于各种预测与分类场景。其核心要点包括:

  • 递归分割:决策树通过递归方式把数据分割成不同的子集,每个子集的相关特征更为一致。
  • 特征选择:采用诸如信息增益、信息增益比、基尼指数等标准来选择最佳分割特征。
  • 树的构建与剪枝:生成树之后为防止过拟合,决策树需要进行剪枝处理,方法包括预剪枝和后剪枝。
  • 处理不同类型数据:决策树能够处理离散型数据以及连续型数据,并可应用于分类以及回归任务。
  • 模型评估:使用准确率、召回率、F1分数等指标来评估模型的性能。

7.2 探讨决策树算法的局限性和改进方向

尽管决策树在很多方面表现优异,但它仍然存在一些局限性,如:

  • 过拟合:决策树可能因模型过于复杂而出现过拟合。通过剪枝技术可以缓解这一问题。
  • 不稳定性:数据的小变动可能引起树结构的显著变化,导致预测结果的不稳定。
  • 局部最优问题:单个决策树可能只达到局部最优解,而非全局最优。
  • 线性划分限制:决策树无法解决线性不可分问题,需通过其他方法如核方法弥补。

针对上述问题,当前研究与应用中的改进方向主要包括:

  • 集成学习:利用随机森林、梯度提升树等集成学习方法提高模型的稳定性和准确性。
  • 优化算法:运用更高效的特征选择和剪枝算法,以提升模型性能。
  • 结合其他模型:将决策树与其他机器学习模型相结合,如神经网络,以弥补其局限。

7.3 展望未来决策树算法可能的发展趋势

随着计算技术的进步和大数据时代的到来,决策树算法未来的发展趋势可能包括:

  • 自动化与智能化:自动调参、智能化特征选择将成为研究热点。
  • 处理大规模数据:决策树算法将进一步优化以快速处理大规模数据集。
  • 深度学习结合:结合深度学习来进行特征提取和表示学习,改善模型性能。
  • 可解释性:加强对模型的解释性研究,使决策树模型更可信、可靠。

综上所述,决策树算法以其独特的优势在多个领域发挥着重要作用。尽管存在一些局限性,但通过持续的研究和改进,决策树在未来仍将是机器学习领域中的一个研究热点,并在实践中得到广泛应用。


以上内容总结了决策树算法的核心概念、挑战了传统算法的局限性并指出了可能的改进方向,最后对未来的可能发展进行了展望。这些信息可以为读者提供对决策树算法全面深入的理解,并激发对未来算法发展的兴趣和思考。

创作不易,这个过程充满了思考与挑战。每一字、每一句、每一个想法,都是在下用心斟酌和精心打造的。在下希望这些内容能给您带来启发和帮助。如果你觉得这些信息对你有益,不妨给我们一些鼓励。无论是一个小小的点赞,还是分享给更多人,亦或是留言表达你的想法,都是对我们极大的支持和认可。这些鼓励将成为我们继续前进的动力,使我们能够持续提供高质量的内容。谢谢你的支持!
在这里插入图片描述

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

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

相关文章

Linux系统部署Samba服务,共享文件夹给Windows

Samba服务是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 Samba服务是连接Linux与Windows的桥梁,它通过实现SMB(Server Message Block)协议来允许跨平台的文件和打印机共享。该服务不仅支持Linux和…

Linux操作系统以及一些操作命令、安装教程

Web课程完结啦,这是Web第一天的课程大家有兴趣可以传送过去学习 http://t.csdnimg.cn/K547r Linux-Day01 课程内容 Linux简介 Linux安装 Linux常用命令 1. 前言 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统。说到操作系统,大家比…

高考没考好焦虑怎么选计算机专业!一篇告诉你,推荐三个风口专业!想学计算机怎么选大学专业

高考成绩揭晓,几家欢喜几家愁。对于那些未能如愿考取理想分数的同学来说,未来似乎蒙上了一层阴影。尤其是在计算机专业如此热门的今天,低分考生是否还有机会在这个领域找到一席之地?本文将为你揭秘,即使高考成绩不理想…

Drake 机器人仿真

sudo apt-get install,pip3 install,sudo apt install这些命令是在Linux系统中用于安装软件包或Python库的不同方法,它们分别属于不同的包管理系统和工具。 sudo apt-get install: 这是在Debian、Ubuntu等基于Debian的系统上用于从…

mysql [Err] 1118 - Row size too large (> 8126).

1.找到my.ini文件 1.1 控制台输入以下指令,打开服务 services.msc1.2 查看mysql服务的属性 2.停止mysql服务,修改my.ini文件并且保存 innodb_strict_mode03.重启mysql服务 4.验证是否关闭成功 show variables like %innodb_strict_mode%; show vari…

【华为免费实战课】基于ENSP实现企业园区网组网项目实战

带你一起走进网工的世界! 2024年G-LAB【华为实战公开课】即将开始啦!华为实战千万别错过! 公开课为期四天,6月18日-6月21日晚20:00开始 关注 工 仲 好:IT运维大本营,私信glab-mary&#xff0…

算法课程笔记——线段树维护哈希

算法课程笔记——线段树维护哈希 提前空出来

FastAdmin后台开发框架 lang 任意文件读取漏洞复现

0x01 产品简介 FastAdmin是一款基于PHPBootstrap的开源后台框架,专为开发者精心打造。它基于ThinkPHP和Bootstrap两大主流技术构建,拥有完善的权限管理系统和一键生成CRUD等强大功能。FastAdmin致力于提高开发效率,降低开发成本,…

苏州辰安塑业携塑料托盘、塑料物流箱解决方案亮相2024杭州快递物流展

苏州辰安塑业携塑料托盘、吹塑托盘、塑料卡板箱、塑料周转箱、塑料物流箱、塑料垃圾桶解决方案盛装亮相2024杭州快递物流展! 展位号:3C馆A51 苏州辰安塑业有限公司,是一家专业从事塑料托盘、吹塑托盘、塑料卡板箱、塑料周转箱、塑料物流箱、…

【计算机毕业设计】235基于微信小程序点餐系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

CentOS搭建kubernetes集群详细过程(yum安装方式)

kubernetes集群搭建详细过程(yum安装方式) Kubernetes,也被称为K8s,是一个多功能的容器管理工具,它不仅能够协调和调度容器的部署,而且还能监控容器的健康状况并自动修复常见问题。这个平台是在谷歌十多年…

减肥药实质利好服装业:身材好了,更时尚了 1-5月份,新建商品房销售面积同比下降20.3%

减肥药实质利好服装业:身材好了,更时尚了 减肥成功的顾客纷纷瞄准性感look,不但促进了销售,还给服装品牌节省了成本,因为小尺寸的衣服使用的面料更少。大码女装,可能是下一个被 GLP-1减肥神药杀死的行业。…

基于ChatGPT-4o自然科学研究全流程实践技术应用

自然科学研究遵循严谨的科学方法论,包括文献调研、问题综述、试验设计、提出假设、数据清洗、统计诊断、大数据分析、经典统计模型(回归模型、混合效应模型、结构方程模型、Meta分析模型)、参数优化、机器/深度学习、大尺度模型构建与模拟、论…

万字长文详述 - 带你了解Jvm虚拟机运行时数据区

JVM虚拟机,对大部分Java程序员而言,是既熟悉又陌生的存在,Java程序在虚拟机的自动内存管理机制帮助下,减少了绝大部分的内存管理工作。但也正是因为如此,虚拟机如果出现了内存溢出或者泄露的情况,问题排查、…

C++ SIMD性能优化

// 使用SIMD指令优化的向量加法 //<mmintrin.h> MMX //<xmmintrin.h> SSE //<emmintrin.h> SSE2 //<pmmintrin.h> SSE3 //<tmmintrin.h> SSSE3 //<smmintrin.h> SSE4.1 //<nmmintrin.h> SSE4.2 //<wmmintrin.h> AES //<imm…

一文细谈SNN的基本数学原理,LIF模型,STDP与STBP学习方法

首先本文是读完 如何看待第三代神经网络SNN&#xff1f;详解脉冲神经网络的架构原理、数据集和训练方法 原创-CSDN博客 一文通俗入门脉冲神经网络(SNN)第三代神经网络-CSDN博客 两篇文章的总结&#xff0c;文章仅用于学习。 本文主要讨论STDP和STBP方法。 我们都知道&…

JavaEE、SSM基础框架、JavaWeb、MVC(认识)

目录 一、引言 &#xff08;0&#xff09;简要介绍 &#xff08;1&#xff09;主要涉及的学习内容 &#xff08;2&#xff09;学习的必要性 &#xff08;3&#xff09;适用学习的人群&#xff08;最好有这个部分的知识基础&#xff09; &#xff08;4&#xff09;这个基础…

FFmpeg中内存分配和释放相关的源码:av_malloc函数、av_mallocz函数、av_free函数和av_freep函数分析

一、av_malloc函数分析 &#xff08;一&#xff09;av_malloc函数的声明 av_malloc函数的声明放在在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为5.0.3&#xff0c;该ffmpeg在CentOS 7.5上通过10.2.1版本的gcc编译&#xff09;的头文件libavutil/mem.h中&#xff1a;…

Science | 稀土开采威胁马来西亚的生物多样性

马来西亚是一个生物多样性热点地区&#xff0c;拥有超过17万种物种&#xff0c;其中1600多种处于濒临灭绝的风险。马来西亚的热带雨林蕴藏了大部分的生物多样性&#xff0c;并为全球提供重要的生态系统效益&#xff0c;同时为土著社区带来经济和文化价值。同时马来西亚具有可观…

Python批量保存Excel文件中的图表为图片

Excel工作簿作为一款功能强大的数据处理与分析工具&#xff0c;被广泛应用于各种领域&#xff0c;不仅能够方便地组织和计算数据&#xff0c;还支持用户创建丰富多彩的图表&#xff0c;直观展示数据背后的洞察与趋势。然而&#xff0c;在报告编制、网页内容制作或分享数据分析成…