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

news2024/11/26 23:58:27

【机器学习】集成学习---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_i
    
    b. 在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.coloradmin.cn/o/1631993.html

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

相关文章

【kettle006】kettle访问华为openGauss高斯数据库并处理数据至execl文件

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下华为openGauss高斯数据库相关知识体系 3.欢迎批评指正&#xff0c;跪谢…

格瑞威特 | 邀您参加2024全国水科技大会暨技术装备成果展览会

—— 展位号&#xff1a;A13 —— 企业介绍 北京格瑞威特环保设备有限公司成立于2009年&#xff0c;是专业从事设计、研发、销售智能加药计量泵、在线水质分析仪表、便携式水质分析仪表、流量计、液位计、阀门、搅拌机、烟气报警仪、加药装置等各类水处理设备及配件的OEM供服…

一、初识VUE

Vue Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&…

滑块验证码破解----Java使用opencv后端破解滑块验证

使用技术:Java SpringBootopenCV 在windows上首先需要下载opencv进行安装,先去官网:Releases - OpenCV 下载这个windows版本的安装包 下载后直接安装解压就行,然后需要,然后找到安装位置里的这个文件: 你下载的是什么版本的,这里的数字就是多少,比如我下载4.5.3版本那么这…

【CANoe示例分析】TCP Chat(CAPL) with TLS encription

1、工程路径 C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 15.3.89\Ethernet\Simulation\TLSSimChat 在CANoe软件上也可以打开此工程:File|Help|Sample Configurations|Ethernet - Simulation of Ethernet ECUs|Basic AUTOSAR Adaptive(SOA) 2、示例目…

嘉楠堪智 CanMV K230 的 CanMV-IDE 环境与 MicroPython 编程

嘉楠推出了 CanMV IDE 开发环境&#xff0c;可以使用 MicroPython 开发针对 CanMV K230 的各种程序&#xff0c;同时也提供了大量的例子程序&#xff0c;方便使用者学习。 嘉楠开发者社区&#xff0c;给出了详细的 CanMV K230 教程&#xff0c;可以借以快速上手。 目录 固件…

【Java难点】多线程终极

悲观锁和乐观锁 悲观锁 synchronized关键字和Lock的实现类都是悲观锁。 它很悲观&#xff0c;认为自己在使用数据的时候一定有别的线程来修改数据&#xff0c;因此在获取数据的时候会一不做二不休的先加锁&#xff0c;确保数据不会被别的线程修改。 适合写操作多的场景&…

船用组装式中央空调案例

船用组装式空调的整体介绍 1.1 装置的主要技术数据及配套设备规格 该轮采用的是船用组装式空调装置。 1.1.1 空调装置 1&#xff09;型号&#xff1a;CJKR-116船用组装式空调装置&#xff1b;2&#xff09;制冷型式&#xff1a;直接蒸发式&#xff1b;3&#xff09;制冷量&…

【汇编】#6 80x86指令系统其二(串处理与控制转移与子函数)

文章目录 一、串处理指令1. 与 REP 协作的 MOVS / STOS / LODS的指令1.1 重复前缀指令REP1.2 字符串传送指令&#xff08;Move String Instruction&#xff09;1.2 存串指令&#xff08;Store String Instruction&#xff09;1.3 取字符串指令&#xff08;Load String Instruct…

VULHUB复现fastjson1.2.24反序列化漏洞

蚌埠住了&#xff0c;遇到了很多奇奇怪怪的问题。 如果你问我为啥不用kali&#xff0c;我会告诉你&#xff0c;我电脑上的kali装不成docker-compose!我急用了ubuntu如果你问我为啥用ubuntu克隆&#xff0c;我会告诉你&#xff0c;我电脑上的kali不能安装成功java8这个版本如果你…

一二三应用开发平台使用手册——系统管理-权限项模块-使用说明

权限项 概述 在RBAC模型中&#xff0c;资源、角色、用户三个关键元素&#xff0c;构成权限体系。资源是权限控制的对象&#xff0c;因此常称之为权限项。 平台中所有的权限项进行集中管理&#xff0c;菜单、按钮、请求、分组等通过类型进行区分&#xff0c;实体与库表公用&a…

读天才与算法:人脑与AI的数学思维笔记13_Coq证明助手

1. 计算机 1.1. 对于计算机来说&#xff0c;它就很擅长处理这种重复而机械且计算量庞大的任务 1.1.1. 在速度与准确性等方面&#xff0c;计算机是远超过手工计算的 1.2. 计算机只能执行指令&#xff0c;并无自主创造力 1.2.1. 想…

第七天 dfs剪枝优化

第七天 dfs剪枝&优化 1可行性剪枝 2最优性剪枝 3重复性剪枝 题 1 输入 5 5 6 …S. XX.X. …X… …D.X …X… 输出 YES —————————————— 题解 #include<iostream> #include<cstdio> using namespace std; const int N 10; int n,m,T; char …

分治策略 --- 快排归并

目录 分治-快排 一、颜色分类 二、排序数组 三、数组中的第K个最大元素 四、库存管理 分治-归并 一、排序数组 二、交易逆序对的总数 三、计算右侧小于当前元素的个数 四、翻转对 分治是一种思想&#xff0c;也就是将大问题分解成小问题&#xff0c;一直分到小问题可…

【bug已解决】发生错误,导致虚拟 CPU 进入关闭状态。如果虚拟机外部发生此错误,则可能已导致物理计算机重新启动......

本bug报错已找到原因,并成功解决。 项目场景: vmware安装ubuntu报错。 如下: 发生错误,导致虚拟 CPU 进入关闭状态。如果虚拟机外部发生此错误,则可能已导致物理计算机重新启动。错误配置虚拟机、客户机操作系统中的错误或 VMware Workstation 中的问题都可以导致关闭状…

关于google search console工具提交sitemap.xml无法抓取的问题解决办法

其实这个问题很好解决。 第一种情况&#xff1a;利用工具为我们的网站自动生成静态的sitemap.xml文件。这种可以检查下是否完整&#xff0c;然后上传到根目录下去&#xff0c;再去google search console提交我们的网站地图。 第二种情况&#xff1a;同样利用工具自动生成动态s…

idea中使用GlassFish服务器启动项目

idea中使用GlassFish服务器进行测试 1.项目背景 当前在研究openMDM项目, 不过该项目不是springboot项目, 并且是使用GlassFish进行war部署的, 但是需要在idea中进行项目的二次开发,故需要进行idea启动项目并且进行开发和调试 2.GlassFish是什么 GlassFish是一个web服务器, …

用来传输文件的协议-FTP

一.FTP协议--文件传输协议 1.了解FTP协议 &#xff08;1&#xff09;FTP服务是用来传输文件的协议 FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;是TCP/IP协议组中的协议之一&#xff0c;用于互联网上的控制文件的双向传输。是传输文件到Linu…

图像置乱加密-Arnold加密算法

置乱加密是另一种较常用的加密方法&#xff0c;现也被许多文献选用&#xff0c;置乱加密可以是以像素为单位进行全局置乱&#xff0c;该方式打乱了图像像素值的位置&#xff0c;使其图像内容失去相关性&#xff0c;达到保护的目的。也可以是以块为单位进行置乱&#xff0c;该方…

软件开发技巧---TODO特殊事项标注

软件开发技巧—TODO特殊事项标注 文章目录 软件开发技巧---TODO特殊事项标注1、前言2、环境3、TODO注释规范4、Qt中使用TODO5、VS中使用TODO6、总结 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;开发工具 &#x1f448; 1、前言 &#x1f9d8;&…