【机器学习-21】集成学习---Bagging之随机森林(RF)

【机器学习】集成学习---Bagging之随机森林(RF)

  • 一、引言
    • 1. 简要介绍集成学习的概念及其在机器学习领域的重要性。
    • 2. 引出随机森林作为Bagging算法的一个典型应用。
  • 二、随机森林原理
    • 1. Bagging算法的基本思想
    • 2. 随机森林的构造
    • 3. 随机森林的工作机制
  • 三、随机森林的伪代码
  • 四、随机森林的优点
  • 五、案例分析
  • 六、总结与展望

一、引言

1. 简要介绍集成学习的概念及其在机器学习领域的重要性。

  在机器学习的广袤领域中,集成学习是一种强大且灵活的策略,它通过将多个单独的学习器(或称为“基学习器”)组合起来,形成一个更加强大的学习器,以提升模型的预测性能。集成学习的核心思想在于“集体智慧”的力量,即多个学习器的联合决策通常会比单一学习器的决策更为准确和稳健。

  集成学习的重要性在于它能够有效解决单一学习器可能存在的过拟合、欠拟合、稳定性差等问题。通过将多个基学习器的预测结果进行综合,集成学习不仅能够提高预测精度,还能增强模型的鲁棒性和泛化能力。此外,集成学习还能够利用不同基学习器之间的差异性,捕捉到数据中的更多信息,从而进一步提升预测性能。

  在集成学习的众多策略中,Bagging(Bootstrap Aggregating)是一种非常受欢迎的方法。Bagging通过自助法采样生成多个不同的训练子集,并在每个子集上构建基学习器。由于每个基学习器都是在不同的数据子集上训练的,因此它们之间具有较大的差异性。这种差异性使得Bagging能够在集成过程中有效地降低模型的方差,提高预测的稳定性。

2. 引出随机森林作为Bagging算法的一个典型应用。

  随机森林(Random Forest,简称RF)则是Bagging算法的一个典型应用,也是当前机器学习领域最受欢迎的算法之一。随机森林以决策树作为基学习器,并在构建每棵决策树时引入了额外的随机性。具体来说,随机森林在构建决策树时不仅使用自助法采样生成不同的训练子集,还会在每个节点分裂时随机选择一部分特征进行考虑。这种随机性的引入进一步增加了基学习器之间的差异性,使得随机森林能够取得更好的预测性能。

  综上所述,集成学习是一种强大的机器学习策略,而随机森林作为Bagging算法的一个典型应用,不仅继承了Bagging的优点,还通过引入随机性进一步提升了模型的预测性能。在接下来的内容中,我们将详细探讨随机森林的原理、实现方式、优点以及实际应用案例,以期为读者提供更深入的理解和认识。

二、随机森林原理

  随机森林是一种基于集成学习的预测模型,它结合了多个决策树的预测结果来提高整体预测的准确性。随机森林的构造基于Bagging算法,通过在数据样本和特征选择上的随机性,增加模型的多样性和稳定性。

1. Bagging算法的基本思想

  在集成学习原理总结中,给出bagging的原理图。
在这里插入图片描述

  (1)、Bagging的特点“随机采样”。随机采集跟训练集个数m相同的样本,采集T次。得到采样集。

  (注意:GBDT(Gradient Boosted Decision Tree)的子采样是无放回采样,而Bagging的子采样是放回采样。)

  (2)、对于一个样本,在m个样本的随机采样中,每次被采集到的概率是1/m。

  在m次采样中没有采集到的概率是:

   P (一次都未被采集) = ( 1 − 1 / m ) m P(一次都未被采集) = (1-1/m)^m P(一次都未被采集)=(11/m)m

  对m取极限得到:
lim ⁡ m → ∞ ( 1 − 1 m ) m → 1 e ≈ 0.368 \begin{aligned} \lim_{m\to \infty} (1 - \tfrac{1}{m})^m \rightarrow \tfrac{1}{e} \approx 0.368 \end{aligned} mlim(1m1)me10.368

  也就是说bagging的每轮随机采样中,训练集大约有36.8%的数据没被采集。

  对于大约36.8%没被采样的数据,称为“袋外数据”。这些数据没参与训练集模型的拟合,但可以作为测试集用于测试模型的泛化能力,这样的测试结果称为“外包估计”。

  (3)、bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。

  (4)、bagging的结合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。

  由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。

  Bagging算法的基本思想是通过结合多个基学习器的预测结果来提升整体性能。具体来说,Bagging采用自助法(Bootstrap)采样来生成多个不同的训练子集,并在每个子集上构建基学习器。这种采样方式是有放回的,即每次从原始训练集中随机抽取一个样本后,该样本仍然可以被再次抽取。

  通过自助法采样,每个基学习器都是在不同的数据子集上训练的,因此它们之间具有较大的差异性。这种差异性使得Bagging能够在集成过程中有效地降低模型的方差,提高预测的稳定性。

  在构建基学习器时,Bagging通常采用决策树作为基学习器。决策树是一种易于理解和实现的分类与回归方法,通过递归地将数据集划分为若干个子集,并根据子集的纯度来选择最佳的划分属性。

  在得到多个基学习器的预测结果后,Bagging通过投票或平均的方式将它们组合起来得到最终的预测结果。对于分类问题,通常采用投票的方式,即选择出现次数最多的类别作为最终的预测结果;对于回归问题,则采用平均的方式,即将所有基学习器的预测值取平均得到最终的预测值。

2. 随机森林的构造

  随机森林在Bagging的基础上进行了扩展,通过在构建决策树时引入额外的随机性来增加模型的多样性。具体来说,随机森林在构建每棵决策树时,不仅使用自助法采样生成不同的训练子集,还会在每个节点分裂时随机选择一部分特征进行考虑。

  这种随机选择特征子集的方式使得每棵决策树在构建过程中都只能看到部分特征的信息,从而增加了基学习器之间的差异性。由于每棵决策树都是基于不同的特征子集进行构建的,因此它们对于相同的输入数据可能会产生不同的预测结果。这种差异性使得随机森林能够在集成过程中捕捉到更多的信息,进一步提高预测的准确性。

3. 随机森林的工作机制

  随机森林的工作机制相对简单直观。首先,通过对原始训练集进行自助法采样生成多个不同的子数据集。然后,在每个子数据集上构建一棵决策树,并在构建过程中随机选择特征子集进行分裂。这样,我们就得到了一个由多棵决策树组成的随机森林。

  在预测阶段,对于一个新的输入样本,我们将其输入到随机森林中的每一棵决策树中,得到每棵树的预测结果。然后,根据具体的任务类型(分类或回归),通过投票或平均的方式将所有树的预测结果组合起来,得到最终的预测结果。

  由于随机森林结合了多个基学习器的预测结果,并且基学习器之间具有较大的差异性,因此它能够有效地降低模型的方差和偏差,提高预测的准确性和稳定性。同时,随机森林还具有良好的可解释性和可视化能力,使得用户可以更好地理解和分析模型的预测结果。

三、随机森林的伪代码

  随机森林(Random Forest,简称RF)是一种基于集成学习的算法,它通过构建并结合多个决策树来提高预测的准确性和稳定性。下面我们将通过伪代码的形式详细描述随机森林的算法流程。

输入:D:原始训练数据集m:每次分裂时考虑的特征数(m < 总特征数)n_trees:随机森林中决策树的数量输出:RF:随机森林模型算法流程:
1. 初始化随机森林模型RF为空2. 对于i从1到n_trees:a. 使用自助法(Bootstrap)从D中有放回地随机抽取样本,形成训练子集D_ib. 在D_i上构建一棵决策树T_i:i. 初始化根节点,包含D_i中的所有样本ii. 对于当前节点N,如果它包含的样本都属于同一类别C,或者样本数少于预设阈值,或者没有更多特征可用进行分裂,则将该节点标记为叶节点,其类别为C(对于分类问题)或该节点样本的平均值(对于回归问题)iii. 否则,从D_i中的m个特征中随机选择一个特征子集iv. 使用最佳划分准则(如信息增益、基尼指数等)在选定的特征子集中选择一个特征进行分裂,将当前节点N分裂为多个子节点v. 对每个子节点递归执行步骤ii-iv,直到满足停止条件c. 将构建好的决策树T_i添加到随机森林模型RF中3. 返回随机森林模型RF

  在上面的伪代码中,我们描述了随机森林算法的主要步骤。首先,我们初始化一个空的随机森林模型。然后,对于每一棵树,我们使用自助法从原始训练数据集中随机抽取样本以形成训练子集。在构建每棵决策树时,我们采用了随机选择特征子集的策略来增加基学习器之间的差异性。具体来说,在每次分裂时,我们并不是考虑所有的特征,而是从特征集中随机选择一个子集来进行分裂。这样,每棵树都是在不同的特征和样本子集上构建的,从而增加了模型的多样性。最后,我们将所有构建好的决策树添加到随机森林模型中,并返回这个模型以供后续的预测使用。

  需要注意的是,随机森林中的每棵树都是独立构建的,并且它们的预测结果是通过投票(对于分类问题)或平均(对于回归问题)的方式来进行集成的。这种集成策略使得随机森林能够充分利用各个基学习器的优势,提高整体的预测性能。

  此外,随机森林还有一些超参数可以调整,如每棵树的最大深度、分裂时考虑的最小样本数等,这些参数的选择会影响到模型的复杂度和性能。在实际应用中,我们可以通过交叉验证等方法来选择合适的超参数,以优化模型的预测效果。

四、随机森林的优点

  随机森林作为一种集成学习算法,在机器学习领域具有广泛的应用,其优点使得它在处理各种复杂问题时表现出色。下面将详细阐述随机森林的几个主要优点。

1、预测精度高

  随机森林通过集成多个基学习器(通常是决策树)的预测结果,能够有效提升整体的预测精度。由于每棵决策树都是基于不同的样本子集和特征子集构建的,因此它们之间具有较大的差异性。当这些差异性的基学习器进行集成时,可以通过投票或平均的方式将各自的优点融合起来,从而得到更为准确和稳定的预测结果。这使得随机森林在分类和回归问题上都能表现出色,尤其在处理具有复杂结构和非线性关系的数据时更为有效。

2、能够处理高维数据

  在高维数据场景下,许多机器学习算法可能会面临维度灾难的问题,即随着特征数量的增加,模型的复杂度急剧上升,导致过拟合和计算效率下降。然而,随机森林在处理高维数据时具有天然的优势。它通过在每个节点分裂时随机选择特征子集进行考虑,有效地降低了模型的复杂度,并避免了过拟合的发生。同时,由于随机森林是基于树的算法,它能够自动地选择对预测结果有贡献的特征,忽略那些不相关的特征,从而提高了模型的泛化能力。

3、能够评估特征的重要性

  随机森林提供了一种有效的特征重要性评估方法。在构建每棵决策树的过程中,可以计算每个特征在分裂节点时所带来的不纯度减少量(如信息增益或基尼指数减少量)。通过将这些不纯度减少量在随机森林中所有决策树上进行平均,就可以得到每个特征的平均不纯度减少量,从而评估特征的重要性。这种方法不仅能够帮助我们理解哪些特征对预测结果有重要影响,还可以用于特征选择和降维,进一步提高模型的性能和可解释性。

4、对缺失值不敏感

  在实际应用中,数据往往存在缺失值的问题。许多机器学习算法在处理含有缺失值的数据时需要进行数据清洗或填充操作,这可能会引入额外的噪声或偏差。然而,随机森林对缺失值并不敏感。在构建决策树时,随机森林能够自动地处理含有缺失值的样本,通过考虑不同特征值的组合来找到最优的分裂方式。这使得随机森林能够在不进行数据清洗的情况下直接应用于实际数据集,提高了算法的灵活性和实用性。

5、易于并行化

  由于随机森林中的每棵决策树都是独立构建的,因此该算法可以很容易地进行并行化。这意味着我们可以利用多核处理器或分布式计算平台来同时构建多棵决策树,从而显著提高计算效率。这种并行化的特性使得随机森林能够处理大规模数据集和实时预测任务,满足实际应用中的性能需求。

  综上所述,随机森林具有预测精度高、能够处理高维数据、能够评估特征的重要性、对缺失值不敏感以及易于并行化等优点。这些优点使得随机森林在机器学习领域具有广泛的应用前景,并为解决各种实际问题提供了有效的工具。

五、案例分析

  在本节中,我们将通过一个具体的案例来展示随机森林(RF)在实际问题中的应用。我们将选择一个具有代表性的数据集,执行数据预处理,构建随机森林模型,并评估其性能。最后,我们将分析特征的重要性,并讨论随机森林在该案例中的优势和局限性。

1、案例选择

  我们选择使用经典的Iris数据集进行分类任务。Iris数据集包含了150个样本,每个样本有四个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),以及一个目标变量(鸢尾花的种类)。

2、数据预处理

  首先,我们需要加载数据。在Python中,我们可以使用sklearn库中的load_iris函数来加载Iris数据集。然后,我们可以查看数据的形状和特征描述。由于Iris数据集是完整且标准化的,我们不需要进行缺失值处理或特征缩放。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import numpy as np# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

3、模型构建与评估

  接下来,我们构建随机森林分类器,并设置合适的参数。然后,我们使用交叉验证来评估模型的性能。

# 构建随机森林模型
rf = RandomForestClassifier(n_estimators=100, max_depth=3, random_state=42)# 交叉验证评估模型性能
scores = cross_val_score(rf, X_train, y_train, cv=5)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))# 训练模型
rf.fit(X_train, y_train)# 预测测试集
y_pred = rf.predict(X_test)# 评估模型性能
print("Accuracy:", accuracy_score(y_test, y_pred));
print(classification_report(y_test, y_pred))

  模型识别的结果的如下:
在这里插入图片描述

  为了分析模型的过拟合和欠拟合情况,我们可以绘制学习曲线和验证曲线。这需要更多的代码,并涉及到对模型性能的详细分析。

4、特征重要性分析

  随机森林提供了评估特征重要性的功能,我们可以利用这一功能来分析哪些特征对预测结果贡献最大。

# 获取特征重要性
importances = rf.feature_importances_
indices = np.argsort(importances)[::-1]# 打印特征排名
for f in range(X.shape[1]):print("%d. feature %d (%f)" % (f + 1, indices[f], importances[indices[f]]))# 绘制特征重要性图
plt.figure(figsize=(12, 6))
plt.title("Feature importances")
plt.bar(range(X.shape[1]), importances[indices], color="r", align="center")
plt.xticks(range(X.shape[1]), iris.feature_names, rotation=90)
plt.xlim([-1, X.shape[1]])
plt.show()

在这里插入图片描述

5、结果讨论

  通过与其他机器学习算法(如决策树、逻辑回归、支持向量机等)进行比较,我们可以发现随机森林在分类任务中通常表现出较高的性能。随机森林的优势在于它能够自动处理特征选择,对噪声和异常值具有较好的鲁棒性,并且不易过拟合。然而,随机森林也可能存在计算成本较高和解释性相对较差的局限性。在本案例中,随机森林成功地识别了鸢尾花分类的关键特征,并实现了较高的分类准确率。

  通过以上案例分析,我们详细展示了随机森林在实际问题中的应用过程,并通过代码实现了模型的构建、评估以及特征重要性分析。这些步骤不仅帮助我们理解随机森林的工作原理,还为我们在实际项目中应用随机森林提供了有益的参考。

六、总结与展望

  在本文中,我们深入探讨了集成学习中的一种重要方法——随机森林(Random Forest, RF)。随机森林以其出色的预测性能和稳定性,在机器学习领域占据了重要的地位。通过构建多个基学习器(决策树)的集成,随机森林能够显著提升预测的精度,并降低过拟合的风险。同时,随机森林在处理高维数据、评估特征重要性以及处理缺失值等方面也展现出独特的优势。

  在案例分析部分,我们以Iris数据集为例,展示了随机森林在实际分类任务中的应用。通过数据预处理、模型构建与评估以及特征重要性分析,我们验证了随机森林在分类任务中的高效性和准确性。此外,我们还通过与其他机器学习算法的性能对比,进一步凸显了随机森林在该案例中的优势。

  然而,随机森林并非万能之药。尽管它在许多问题上表现出色,但在某些特定情况下可能仍存在局限性。例如,当数据集的样本量较小时,随机森林的性能可能受到影响。此外,由于随机森林基于树的算法,其解释性相对较差,有时难以直观地理解模型的决策过程。

  展望未来,随机森林仍有广阔的发展前景。随着大数据和云计算技术的不断进步,随机森林在处理大规模数据集和实时预测任务方面的能力将得到进一步提升。同时,随着研究的深入,我们有望开发出更高效的算法和更精细的参数调优方法,以进一步提高随机森林的性能和稳定性。

  此外,随机森林在多个应用领域也具有广阔的应用前景。例如,在生物信息学领域,随机森林可以用于基因表达数据的分析和疾病预测;在金融领域,随机森林可以用于风险评估和信用评分;在医疗领域,随机森林可以用于辅助诊断和制定治疗方案。

  总之,随机森林作为一种强大的机器学习算法,已经在许多领域取得了显著的应用成果。未来,随着技术的不断进步和应用领域的不断扩展,随机森林将继续发挥其在机器学习领域的重要作用,并为解决实际问题提供有力的支持。

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

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

相关文章

导弹追踪效果实现_unity基础开发教程

Unity开发中导弹追踪的原理与实现 前言原理逻辑实现导弹逻辑目标赋值 应用效果结语 前言 ⭕在之前的一个项目的开发中&#xff0c;需要加入一个导弹追踪的游戏功能&#xff0c;且还要实现不规则发射路径&#xff0c;但是这种功能是第一次做&#xff0c;经过查阅资料和询问做过的…

Pytorch快速上手

Pytorch快速上手 一、加载数据集 &#xff08;Dataset&#xff09; 加载数据集需要继承Dataset&#xff0c;通常情况下需要实现__init__方法、__getitem__方法以及__len__方法。 案例一&#xff1a; import osimport torch from torch.utils.data import Dataset from PIL …

[嵌入式AI从0开始到入土]17_Ascend C算子开发

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

C++静态数组和C语言静态数组的区别( array,int a[])

目录 一、区别 1、越界读&#xff0c;检查不出来 2、越界写&#xff0c;抽查&#xff0c;可能检查不出来&#xff0c;有局限性 二、array缺点 一、区别 C语言的静态数组int a[]; 静态数组的越界检查不稳定的&#xff1a; 1、越界读&#xff0c;检查不出来 2、越界写&#x…

通过helm在k8s上安装minio

1 helm安装minio 1.1 下载minio 添加仓库 helm repo add bitnami https://charts.bitnami.com/bitnami 将minio拉取下来 helm pull bitnami/minio --version 版本号 解压到本地开始编辑配置文件 tar -zxf minio-xxx.tgz [rootk8s-master01 minio]# vi values.yaml 1.2…

Python-VBA函数之旅-open函数

目录 一、open函数的常见应用场景 二、open函数使用注意事项 三、如何用好open函数&#xff1f; 1、open函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博客 一、open函数的常见应用场…

Kannala-Brandt 鱼眼相机模型

最近在学习 ORB-SLAM3 的源代码&#xff0c;并模仿、重构了相机模型的实现 在学习的过程中发现针孔相机 (Pinhole) 与鱼眼相机 (Fisheye) 都有畸变参数&#xff0c;但是鱼眼相机无法使用 cv::undistort 函数去畸变 在对鱼眼相机的深度归一化平面进行可视化后&#xff0c;发现…

SQL 注入神器:SQLMap 简单使用

前言 SQLMap 是一款用于自动化 SQL 注入检测与渗透测试的开源工具&#xff0c;其主要功能是检测和利用 Web 应用程序中的 SQL 注入漏洞。以下是 SQLMap 的主要特点和功能&#xff1a; 自动化检测&#xff1a;SQLMap 可以自动发现 Web 应用程序中的 SQL 注入漏洞&#xff0c;包…

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框

菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件&#xff0c;添加配置 因为之后用到lambda&#xff1b; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…

Hive大数据任务调度和业务介绍

目录 一、Zookeeper 1.zookeeper介绍 2.数据模型 3.操作使用 4.运行机制 5.一致性 二、Dolphinscheduler 1.Dolphinscheduler介绍 架构 2.架构说明 该服务内主要包含: 该服务包含&#xff1a; 3.FinalShell主虚拟机启动服务 4.Web网页登录 5.使用 5-1 安全中心…

局域网唤醒平台:UpSnap

简介&#xff1a;UpSnap是一个简单的唤醒局域网网络应用程序。UpSnap为每个用户、每个设备提供了唯一的访问权限。虽然管理员拥有所有权限&#xff0c;但他们可以为用户分配特定的权限&#xff0c;如显示/隐藏设备、访问设备编辑、删除和打开/关闭设备电源。 历史攻略&#xf…

给Ollama套个WebUI,方便使用

Ollama 基本的安装使用参考前文 https://xugaoxiang.com/2024/05/01/ollama-offline-deploy/&#xff0c;前文使用的模型是 llama2&#xff0c;本篇将使用 llama3&#xff0c;因此在启动时&#xff0c;命令是 ollama run llama3。 Ollama Llama3 Llama3 是 Meta 发布的大语言模…

Optional学习记录

Optional出现的意义 在Java中&#xff0c;我们经常遇到的一种异常情况&#xff1a;空指针异常&#xff0c;在原本的编程中&#xff0c;为了避免这种异常&#xff0c;我们通常会向对象进行判断&#xff0c;然而&#xff0c;过多的判断语句会让我们的代码显得臃肿不堪。 所以在J…

用LangChain打造一个可以管理日程的智能助手

存储设计定义工具创建llm提示词模板创建Agent执行总结 众所周知&#xff0c;GPT可以认为是一个离线的软件的&#xff0c;对于一些实时性有要求的功能是完全不行&#xff0c;比如实时信息检索&#xff0c;再比如我们今天要实现个一个日程管理的功能&#xff0c;这个功能你纯依赖…

拼多多关键词怎么推广

拼多多上的关键词推广可以通过以下步骤进行&#xff1a; 拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金…

定子的检查和包扎及转子的检查

线圈接好后 用摇表测试 线圈和外壳之间的绝缘性&#xff01; 测试通过后进行焊接&#xff01;&#xff0c;焊接的工具在后面的文章中会介绍&#xff01; 焊接好后&#xff0c;包绝缘管。 焊接完成后 进行星型连接&#xff0c;或者三角形连接&#xff01; 白扎带进行绑扎&…

室外巡检机器人——A2型高防护轮式巡检机器人

在科技日新月异的时代&#xff0c;室外巡检机器人犹如一位无畏的守护者&#xff0c;悄然出现在我们的视野之中。它迈着坚定的步伐&#xff0c;穿梭于各种复杂的室外环境&#xff0c;承担着重要的巡检任务。它是科技与智慧的结晶&#xff0c;是保障安全与稳定的前沿力量。让我们…

【Python基础】进程

文章目录 [toc]程序与进程的区别与联系同步任务示例 并行任务示例进程调度的“随机性” 进程属性与方法process_object.start()方法process_object.join()方法process_object.daemon属性没有设置守护进程的情况设置守护进程的情况 process_object.current_process()方法 进程通…

数仓开发:DIM层数据处理

一、了解DIM层 这个就是数仓开发的分层架构 我们现在是在DIM层&#xff0c;从ods表中数据进行加工处理&#xff0c;导入到dwd层&#xff0c;但是记住我们依然是在DIM层&#xff0c;而非是上面的ODS和DWD层。 二、处理维度表数据 ①先确认hive的配置 -- 开启动态分区方案 -- …

c++:优先级队列(priority queue)使用及底层详解,附带仿函数初步使用

文章目录 优先级队列的使用大堆小堆**注意** 优先级队列的模拟实现pushpopsizeemptytop 仿函数仿函数是什么pushpop 仿函数结合优先级队列的优势 优先级队列的使用 优先级队列本质是就是完全二叉树,是个堆.我们可以用优先级队列来取出一段序列中的前N个最大值. priority_queue…