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

万字长文解读机器学习——决策树

🌺历史文章列表🌺

  1. 机器学习——损失函数、代价函数、KL散度
  2. 机器学习——特征工程、正则化、强化学习
  3. 机器学习——常见算法汇总
  4. 机器学习——感知机、MLP、SVM
  5. 机器学习——KNN
  6. 机器学习——贝叶斯
  7. 机器学习——决策树
  8. 机器学习——随机森林、Bagging、Boosting、集成学习
  9. 机器学习——聚类算法(Kmeans、GMM-使用EM优化)
  10. 机器学习——降维

文章目录

    • 决策树(Decision Tree)概述
    • 基本概念
    • 任务类型
      • 分类任务
      • 回归任务
      • 分类和回归中的差异
    • 决策树算法的具体实现
      • 比较总结
      • ID3(Iterative Dichotomiser 3)
        • 原理
        • 主要特点
        • 信息熵(Entropy)
        • 信息增益(Information Gain)
        • 算法流程
        • 优点
        • 缺点
      • C4.5
        • 原理
        • 主要特点
        • 信息增益比(Information Gain Ratio)
        • 固有信息(Intrinsic Information)
        • 处理连续型变量
        • 处理缺失值
        • 算法流程
        • 优点
        • 缺点
      • CART(Classification and Regression Tree)
        • 原理
        • 主要特点
        • 分类任务基尼指数(Gini Index)
        • 回归任务均方误差(Mean Squared Error, MSE)
        • 分类树算法流程
        • 回归树算法流程
        • 优点
        • 缺点
    • 决策树的过拟合和欠拟合
      • 解决欠拟合
      • 解决过拟合
    • 剪枝(Pruning)
      • 预剪枝(Pre-pruning)
      • 后剪枝(Post-pruning)
        • C4.5 的错误率估计剪枝操作
        • CART 的成本复杂度剪枝操作
      • 总结


决策树(Decision Tree)概述

决策树是一种基于树形结构的机器学习算法,广泛应用于分类和回归任务中。它通过一系列的规则将数据集划分为不同的子集,从而进行分类或预测。决策树算法直观、易于解释,并且能够处理复杂的特征交互。

基本概念

  • 节点(Node)
    • 根节点(Root Node):树的起始节点,表示整个数据集
    • 内部节点(Internal Node):表示数据集的划分条件,包含特征和阈值
    • 叶节点(Leaf Node):表示分类或回归的最终结果,包含类别标签或连续值
  • 分支(Branch)——决策规则:从一个节点到另一个节点的路径。
  • 路径(Path)——决策过程:从根节点到叶节点的序列。
  • 深度(Depth)——决策树的复杂度:从根节点到最深叶节点的最长路径长度。

任务类型

决策树既可以用于分类任务,也可以用于回归任务

分类任务

在分类任务中,决策树用于将数据划分到不同的离散类别中。目标是通过一系列条件判断,将数据划分为不同类别,并最终在叶节点上输出类别标签。

  • 常用算法(不同的划分特征的标准)

    • ID3:使用信息增益来选择划分特征。
    • C4.5:使用信息增益比来选择划分特征,并支持连续特征处理。
    • CART(分类树):使用基尼系数(Gini Index) 来选择最优划分特征。
  • 应用场景

    • 电子邮件分类(垃圾邮件识别)。
    • 图像识别(识别不同的物体类别)。
    • 医疗诊断(预测病人的健康状况类别)。

回归任务

在回归任务中,决策树用于预测连续值。目标是通过一系列的分裂操作,将数据划分成不同的区间,并在每个叶节点上输出一个数值(通常是该节点中所有样本的均值)。

  • 常用算法

    • CART(回归树):使用**最小化均方误差(Mean Squared Error, MSE)**或其他度量标准来选择最优划分特征。
  • 应用场景

    • 房价预测(预测某个地区的房屋价格)。
    • 股票市场预测(预测股票的未来价格)。
    • 气象预测(预测某个地点的温度或降雨量)。

分类和回归中的差异

分类树(Classification Tree):

  • 输出的是离散类别标签。
  • 每个叶节点表示一个类别。
  • 划分标准基于分类纯度(如信息增益、基尼系数)。

回归树(Regression Tree):

  • 输出的是连续数值。
  • 每个叶节点表示一个数值(如节点样本的均值)。
  • 划分标准基于回归误差(如均方误差)。

决策树算法的具体实现

比较总结

算法划分标准支持连续特征处理缺失值树结构优点缺点适用场景
ID3信息增益多叉树实现简单,适合小规模数据偏向于选择取值多的特征,不能处理连续变量小规模、离散特征数据集
C4.5信息增益比多叉树支持连续特征,能处理缺失值计算复杂度高,生成树较大大规模数据,有连续特征和缺失值的数据
CART基尼系数二叉树适用于分类和回归问题,剪枝方便对噪声数据敏感,容易过拟合分类、回归任务,要求生成二叉树时
  • ID3 适合小规模的、离散特征的数据集,但不适合处理连续特征和缺失值
  • C4.5 是 ID3 的改进版本,能处理连续特征、缺失值,适合处理复杂的大规模数据集。
  • CART 能同时用于分类和回归任务,生成简洁的二叉树结构,但对噪声敏感,适合需要生成二叉树结构的应用场景。

ID3(Iterative Dichotomiser 3)

原理
  • ID3 通过信息增益(Information Gain)来选择划分特征,ID3 选择信息增益最大的特征进行划分。信息增益表示划分数据集后信息熵的减少程度,熵越小,数据纯度越高。主要用于分类任务
主要特点
  • 划分准则:使用信息增益,优先选择信息增益最大的特征进行分裂。
  • 适用数据类型:ID3 主要适用于离散特征,不支持连续特征的处理。
  • 剪枝:ID3 本身没有提供剪枝机制,容易出现过拟合问题。
信息熵(Entropy)

信息熵用于衡量数据集的(纯度或)混乱程度信息熵越高,数据越混乱;信息熵越低,数据越纯。

对于数据集 ( D D D ),它的熵定义为:
H ( D ) = − ∑ i = 1 m p i log ⁡ 2 ( p i ) H(D) = - \sum_{i=1}^m p_i \log_2(p_i) H(D)=i=1mpilog2(pi)
其中:

  • m m m 是类别的总数。
  • p i p_i pi 是数据集中属于第 i i i 类的样本所占的比例。
信息增益(Information Gain)

表示某一特征 A A A 将数据集 D D D 划分后的纯度提升程度。ID3 选择信息增益最大的特征进行划分。信息增益的公式为:
信息增益 = H ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ H ( D v ) \text{信息增益} = H(D) - \sum_{v=1}^V \frac{|D_v|}{|D|} H(D_v) 信息增益=H(D)v=1VDDvH(Dv)
其中:

  • H ( D ) H(D) H(D) 是数据集 D D D 的信息熵。
  • V V V 是特征 A A A 的可能取值数。
  • D v D_v Dv 是根据特征 A A A 的取值 v v v 分割得到的子集。
  • ∣ D v ∣ / ∣ D ∣ |D_v| / |D| Dv∣/∣D 表示取值 v v v 的样本在数据集 D D D 中的比例。
  • H ( D v ) H(D_v) H(Dv) 是子集 D v D_v Dv 的熵。
算法流程
  1. 计算当前所有特征对数据集的信息增益
  2. 选择信息增益最大的特征作为当前节点的划分标准。
  3. 根据该特征的不同取值划分数据集,并在每个子集上递归地重复步骤 1 和步骤 2。
  4. 当所有特征都被使用,或所有样本都属于同一类别时,停止划分。
优点
  • 简单易懂:ID3 的核心思想和实现相对简单,能够快速生成决策树。
  • 高效:ID3 计算信息增益后即可快速进行划分。
缺点
  • 倾向于选择取值多的特征:ID3 更倾向于选择取值多的特征进行划分,可能导致过拟合。
  • 只能处理离散特征:ID3 不能处理连续特征。
  • 对缺失值不敏感:ID3 不能有效处理数据中的缺失值。

C4.5

原理

选择信息增益比信息增益与分裂信息的比值最大的特征进行划分,用于平衡特征数量和划分质量之间的关系。通过引入“分裂信息”(Split Information)来惩罚分裂数目较多的特征支持连续特征,处理缺失值,加入剪枝

主要特点
  • 划分准则:使用信息增益比,避免 ID3 中对多值特征的偏向。
  • 适用数据类型:支持离散和连续特征
  • 剪枝:C4.5 支持错误率估计的后剪枝策略,防止过拟合。
信息增益比(Information Gain Ratio)

信息增益比是信息增益与特征的“固有信息”之比。特征的固有信息衡量的是特征取值的均匀性。信息增益比的公式为:

信息增益比 = 信息增益 固有信息 \text{信息增益比} = \frac{\text{信息增益}}{\text{固有信息}} 信息增益比=固有信息信息增益

其中,信息增益的公式与 ID3 相同

固有信息(Intrinsic Information)

固有信息衡量的是特征 A A A 的取值分布,它的计算公式为:

固有信息 = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ( ∣ D v ∣ ∣ D ∣ ) \text{固有信息} = - \sum_{v=1}^V \frac{|D_v|}{|D|} \log_2 \left( \frac{|D_v|}{|D|} \right) 固有信息=v=1VDDvlog2(DDv)
其中:

  • V V V 是特征 A A A 的可能取值数。
  • D v D_v Dv 是数据集 D D D 中特征 A A A 取值为 v v v 的子集。
  • ∣ D v ∣ / ∣ D ∣ |D_v| / |D| Dv∣/∣D 表示取值 v v v 的样本在数据集 D D D 中的比例。

在 C4.5 算法中,处理连续型变量和缺失值的方法具体如下:


处理连续型变量

当特征是连续型变量时,C4.5 算法将其转化为一个二值问题(例如,小于某个阈值和大于等于该阈值),以便将连续变量用于决策树的分裂。

步骤

  1. 生成候选划分点:将连续特征值按升序排列,计算每个相邻值的中点作为候选划分点。例如,如果连续特征的两个相邻值为 x i x_i xi x i + 1 x_{i+1} xi+1,候选划分点为 t = x i + x i + 1 2 t = \frac{x_i + x_{i+1}}{2} t=2xi+xi+1
  2. 计算信息增益比:对于每个候选划分点 ( t ),将数据集划分成两个子集
    • 子集 1:特征值 ≤ t \leq t t 的样本。
    • 子集 2:特征值 > t > t >t 的样本。
  3. 选择最佳划分点:计算所有候选划分点的信息增益比,选择信息增益比最大的划分点作为最终分裂点。这样可以有效地将连续变量转化为二值判断。

处理缺失值

在 C4.5 算法中,对于特征值缺失的样本,算法不会简单地丢弃,而是利用概率分布填充缺失值,从而有效利用数据。

步骤

  1. 计算样本权重:在计算信息增益比时,含缺失值的样本按照其在整个数据集中的比例被赋予一个权重。这些缺失样本将按比例分布到不同分支
  2. 按概率分配样本:在分裂节点时,缺失特征的样本将依据分支上的样本比例进行分配。例如,如果一个特征缺失的样本在某节点有 70% 的概率被归入左子树,则会将 70% 的权重分配给左子树,30% 的权重分配给右子树。
  3. 分类时的缺失值处理:在决策树生成后进行预测时,对于测试样本中缺失的特征,C4.5 也使用概率分布填充,使其根据现有特征值的分布推断分类。
算法流程
  1. 计算每个特征的信息增益比
  2. 选择信息增益比最大的特征作为划分特征
  3. 如果特征是连续型变量,将特征值划分为小于某个阈值和大于等于该阈值的两部分。
  4. 处理缺失值,使用概率分布填充
  5. 递归地构建子树,直到满足停止条件。
优点
  • 支持连续特征:C4.5 通过引入阈值分割,能够处理连续型变量。
  • 减少过拟合倾向:使用信息增益比来进行特征选择,避免了对取值多的特征的偏好。
  • 处理缺失值:能够处理数据集中缺失值的问题。

算法流程中的:
3. 如果特征是连续型变量,将特征值划分为小于某个阈值和大于等于该阈值的两部分。
4. 处理缺失值,使用概率分布填充

缺点
  • 计算复杂度较高:相比 ID3,C4.5 由于需要计算信息增益比、处理连续特征和缺失值,计算复杂度较高。
  • 容易产生较大的树:C4.5 生成的树结构有时可能过大,需要进行剪枝以减少过拟合。

CART(Classification and Regression Tree)

原理

CART(Classification and Regression Tree)算法可以用于分类和回归任务。CART 构造的是一棵二叉树

  1. 对于分类任务,选择基尼指数最小的特征作为划分特征。
  2. 对于回归任务,选择均方误差最小的特征进行分裂。
主要特点
  • 划分准则
    • 分类任务:使用基尼指数作为划分准则。
    • 回归任务:使用均方误差作为划分准则。
  • 适用数据类型:支持离散和连续特征
  • 剪枝:CART 支持后剪枝策略,通过成本复杂度剪枝来防止过拟合。
分类任务基尼指数(Gini Index)

基尼指数用于衡量数据集的纯度。基尼系数越小,数据集的纯度越高。选择基尼指数最小的特征作为划分特征。

对于数据集 D D D,其基尼指数定义为:
基尼指数 = 1 − ∑ i = 1 m p i 2 \text{基尼指数} = 1 - \sum_{i=1}^m p_i^2 基尼指数=1i=1mpi2
其中:

  • m m m 是类别的总数。
  • p i p_i pi 是数据集中属于第 $ i$ 类的样本所占的比例。

当一个特征 A A A 有多个可能的取值时,特征 A A A 对数据集 D D D 的基尼指数可以表示为:

Gini ( D , A ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Gini ( D v ) \text{Gini}(D, A) = \sum_{v=1}^V \frac{|D_v|}{|D|} \text{Gini}(D_v) Gini(D,A)=v=1VDDvGini(Dv)

其中:

  • V V V 是特征 A A A 的取值个数。
  • D v D_v Dv 是根据特征 A A A 的取值 v v v 划分得到的子集。
  • Gini ( D v ) \text{Gini}(D_v) Gini(Dv) 是子集 D v D_v Dv 的基尼指数。
回归任务均方误差(Mean Squared Error, MSE)

对于回归任务,CART 算法选择均方误差(MSE)最小的特征进行分裂。均方误差衡量的是预测值和实际值之间的平均平方差。对于数据集 D D D ,均方误差定义为:
MSE = 1 ∣ D ∣ ∑ i = 1 ∣ D ∣ ( y i − y ^ ) 2 \text{MSE} = \frac{1}{|D|} \sum_{i=1}^{|D|} (y_i - \hat{y})^2 MSE=D1i=1D(yiy^)2
其中:

  • ∣ D ∣ |D| D 是数据集中样本的数量。
  • y i y_i yi 是第 i i i 个样本的真实值。
  • y ^ \hat{y} y^ 是数据集 D D D 中所有样本的均值。
分类树算法流程
  1. 对每个特征,计算不同划分下的基尼系数
  2. 选择基尼系数最小的特征作为当前节点的划分特征。
  3. 递归地构建二叉树。
  4. 当达到停止条件(如节点样本数小于设定阈值)时,停止递归。
回归树算法流程
  1. 遍历每个特征:对于每个特征,尝试在数据集中的不同数值作为可能的分裂点。

  2. 计算分裂后的均方误差:对于每个分裂点,计算其分裂后左右子集的加权均方误差(MSE),公式如下:
    在这里插入图片描述

  3. 选择最优分裂点:选择使得分裂后均方误差最小的分裂点,将该特征和分裂点作为当前节点的分裂依据。

  4. 递归构建树:对分裂后的左右子节点重复步骤 1-3,继续寻找最优分裂点,构建新的子节点。

  5. 停止条件:当达到预设的停止条件时(例如节点样本数小于设定阈值或MSE降低不明显),停止递归分裂。此时,该节点成为一个叶节点,并赋予其目标值的平均值作为预测值。

优点
  • 可处理分类和回归问题:CART 不仅适用于分类任务,也可用于回归任务。
  • 生成二叉树结构:树结构简单,每个节点最多有两个分支,便于实现和计算。
  • 易于剪枝:CART 提供了剪枝机制,可以有效减少过拟合。
缺点
  • 对噪声数据敏感:CART 对于数据中的噪声较为敏感,容易生成较复杂的树结构。
  • 基尼系数局限性:基尼系数在处理某些分类问题时效果不如信息增益或信息增益比。
  • 连续特征处理较复杂:虽然 CART 可以处理连续特征,但需要遍历所有特征值进行划分,计算量较大。

决策树的过拟合和欠拟合

解决欠拟合

欠拟合要增加模型复杂度:

  1. 增加树的深度
  2. 减少最小样本分裂数,让更多节点可以分裂
  3. 减少最小叶子节点数,让树生长得更深

欠拟合通常是因为模型的复杂度不够,无法很好地拟合训练数据。应对欠拟合的方法通常是增加模型复杂度。包括:

  • 增加树的深度(max_depth):通过增加决策树的深度,可以让模型拟合更多的数据特征,从而减少欠拟合。
  • 减少最小样本分裂数(min_samples_split):减少节点分裂所需的最小样本数,让更多节点可以分裂,使模型更复杂。
  • 减少最小叶子节点数(min_samples_leaf):减少叶子节点的最小样本数,让树生长得更深、更复杂。

解决过拟合

过拟合要增加模型复杂度:

  1. 限制树的深度
  2. 增加最小样本分裂数,限制树的生长
  3. 增加最小叶子节点数,减少树的大小

过拟合是因为模型过于复杂,导致对训练数据的拟合过度。应对过拟合的方法通常是减少模型复杂度。包括:

  • 限制树的深度(max_depth):限制树的最大深度可以防止树过于复杂,有助于防止过拟合。
  • 增加最小样本分裂数(min_samples_split):通过增加节点分裂所需的最小样本数,可以限制树的生长,使树不至于过度拟合训练数据。
  • 增加最小叶子节点数(min_samples_leaf):增加叶子节点的最小样本数可以减少树的复杂度,防止过拟合。
  • 使用剪枝技术(如代价复杂度剪枝):剪枝是控制过拟合的重要技术之一,通过减少树的大小来防止模型过度拟合。

剪枝(Pruning)

剪枝是决策树中用来防止过拟合的一种技术。它通过移除或合并一些不必要的节点来减少树的复杂度,从而提高模型的泛化能力。剪枝可以分为两种方式:

预剪枝(Pre-pruning)

  • 原理:在构建决策树的过程中,提前停止树的生长,以避免树过于复杂。
  • 方法
    1. 设置最大深度:限制决策树的最大深度,防止树过深导致过拟合。
    2. 设置最小样本数:要求每个节点至少包含一定数量的样本,如果样本数不足则停止划分。
    3. 设置最小信息增益:如果划分后的信息增益小于某个阈值,则停止划分。
  • 优点:节省计算资源,减少构建时间。
  • 缺点:可能会提前停止构建,导致欠拟合。

后剪枝(Post-pruning)

  • 原理在决策树完全生长后,通过评估树的各个子树的表现来剪去不必要的分支,从而简化模型。
  • 方法
    1. 子树替换(Subtree Replacement)用一个叶节点替换一个子树,直到错误率最低。
    2. 子树提升(Subtree Raising)将子节点提升到父节点位置,删除不必要的中间节点
    3. 成本复杂度剪枝(Cost Complexity Pruning):通过最小化模型复杂度和训练误差的加权和,选择最优的子树
  • 优点:能够更精确地控制模型复杂度,提高泛化能力。
  • 缺点:计算量较大,剪枝过程复杂。

:C4.5 和 CART 都使用了后剪枝post-pruning方法来防止决策树的过拟合。

C4.5 的错误率估计剪枝操作

C4.5 在剪枝过程中采用错误率估计(Error-based Pruning)来决定是否剪枝。它通过对每个分支的误分类情况估计,如果剪去子树后能减少误分类率,就将该子树替换为叶节点。

  • 操作步骤
    1. 每个叶节点和子树进行错误率估计。C4.5 引入了拉普拉斯平滑估计来计算每个节点的错误率。
    2. 计算子树的错误率,如果子树的错误率比该子树替换为叶节点后的错误率高,则将该子树剪除,将其变为叶节点。
    3. 重复该过程,直到所有需要剪枝的子树都被剪除。
  • 优点:这种剪枝策略考虑了训练数据中的随机性,可以有效防止过拟合。
  • 局限性:由于需要计算每个节点的错误率,并进行多次迭代计算,剪枝过程的计算开销较大。
CART 的成本复杂度剪枝操作

CART 使用的是成本复杂度剪枝(Cost Complexity Pruning),也称为最小代价复杂度剪枝。基于子树的错误率和模型复杂度的权衡。计算每个子树的错误率和复杂度,复杂度用子树中节点的数量来衡量。CART 会逐步剪掉那些增加了模型复杂度但并没有显著降低错误率的子树

  • 原理:成本复杂度剪枝通过平衡模型的复杂度预测误差来选择最佳子树。它会给每个子树分配一个代价复杂度得分(Cost Complexity Score),该得分考虑了模型的复杂度和训练误差之和。

  • 代价复杂度(Cost Complexity)
    在这里插入图片描述

  • 操作步骤
    1. 计算当前决策树每个子树的代价复杂度得分 (R_\alpha(T))。
    2. 找到降低代价复杂度得分最多的子树,并将其剪除,合并为一个叶节点。
    3. 重复上述步骤,逐步剪枝,直到得到最优子树为止。
    4. 使用交叉验证等方法选择最优的 (alpha) 值,确定最终的剪枝结果。
  • 优点:能够在模型复杂度和预测性能之间找到最优平衡点,较好地控制了模型的复杂度。
  • 局限性:代价复杂度参数的选择对模型性能影响较大,需要进行交叉验证等方法来优化。

总结

  • C4.5 主要用于分类任务,并使用错误率估计的后剪枝策略进行剪枝,以防止过拟合。它通过比较子树和叶节点的错误率来决定是否剪枝。
  • CART 可用于分类和回归任务,采用成本复杂度剪枝方法,通过平衡模型复杂度和训练误差选择最优子树,确保模型具有良好的泛化能力。

因此,C4.5 和 CART 在剪枝策略上各有特点,分别针对不同的任务和模型复杂度进行了优化。

相关文章:

万字长文解读机器学习——决策树

🌺历史文章列表🌺 机器学习——损失函数、代价函数、KL散度机器学习——特征工程、正则化、强化学习机器学习——常见算法汇总机器学习——感知机、MLP、SVM机器学习——KNN机器学习——贝叶斯机器学习——决策树机器学习——随机森林、Bagging、Boostin…...

内网环境,基于k8s docer 自动发包

背景:生产环境是内网,无法连接外部git环境,需要上传tar包打成镜像,然后发布。 简单写了个脚本,记录下方便复用。 将tar包和脚本拷贝到同一个目录下。 使用方式: tar 包名称格式:服务名-版本号…...

【HCIP园区网综合拓扑实验】配置步骤与详解(已施工完毕)

一、实验要求 实验拓扑图如上图所示 1、按照图示的VLAN及IP地址需求,完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan(本实验未使用) 4、上层…...

Qt 编写插件plugin,支持接口定义信号

https://blog.csdn.net/u014213012/article/details/122434193?spm1001.2014.3001.5506 本教程基于该链接的内容进行升级,在编写插件的基础上,支持接口类定义信号。 环境:Qt5.12.12 MSVC2017 一、创建项目 新建一个子项目便于程序管理【…...

Qt中 QWidget 和 QMainWindow 区别

QWidget 用来构建简单窗口 QMainWindow 用来构建更复杂的窗口,QMainWindow 继承自QWidget,在QWidget 的基础上提供了菜单栏、工具栏、状态栏等功能 菜单栏(QMenuBar)工具栏(QToolBar)状态栏(Q…...

Kafka集群中数据的存储是按照什么方式存储的?

1)Topic 数据的存储机制 Topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是Producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,为防止log文件…...

中断的硬件框架

往期内容 本专栏往期内容,interrtupr子系统: 深入解析Linux内核中断管理:从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…...

数据备份策略:企业防御的关键

数据备份是保护数据免受网络攻击的重要步骤。在从恶意软件或勒索软件攻击中恢复时,公司可以使用保存的备份将其恢复到之前的状态。但是,为了确保数据的完全安全,任何公司的备份策略都应该在其总体策略中包含多种解决方案。 根据关于创建、消…...

Baget 私有化nuget

Baget下载 1、下载运行 方法一:cmd运行 dotnet BaGet.dll --urls http://*:8002 http://localhost:8002 方法二:bat脚本运行Baget 创建Start.bat dotnet BaGet.dll --urls http://*:8002 运行Start.bat 方法三:部署成Window服务 NSSM部…...

前端函数的参数都有哪些?

在前端开发中,函数的分类可以根据不同的标准进行。以下是一些常见的函数分类方式,并附有相应的例子: 按传递方式分类: 按值传递:JavaScript 中的基本类型(如数字、字符串、布尔值)都是按值传递的…...

【CSS】什么是BFC?

块级格式化上下文(Block Formatting Context,简称BFC)是CSS布局中的一种重要概念,它决定了块级盒子如何在其容器内排列,以及浮动元素对其周围元素的影响。理解BFC可以帮助解决许多常见的网页布局问题,比如清…...

HCIP小型园区网拓扑实验

1.拓扑以及需求 2.需求分析 需要的核心技术 1、虚拟局域网(VLAN) 2、链路聚合(E-trunk) 3、多生成树协议(MSTP) 4、VLANIF三层逻辑接口 5、虚拟路由冗余协议(VRRP) 6、动态主…...

GRR测量系统的重复性和再现性

GRR(GaugeRepeatabilityandReproducibility)即测量系统的重复性和再现性,是用于评估测量系统性能的一个重要指标。以下是对GRR的详细解释: 一、定义 • 重复性(Repeatability):在相同条件下&…...

133.鸿蒙基础01

鸿蒙基础 1.自定义构建函数1. 构建函数-[Builder ](/Builder )2. 构建函数-传参传递(单向)3. 构建函数-传递参数(双向)4. 构建函数-传递参数练习5. 构建函数-[BuilderParam ](/BuilderParam ) 传递UI 2.组件状态共享1. 状态共享-父子单向2. 状态共享-父子双向3. 状态共享-后代组…...

科技查新小知识

首先科技查新是什么? 科技查新是文献检索和情报调研相结合的情报研究工作,它以文献为基础,以文献检索和情报调研为手段,以检出结果为依据,通过综合分析,对查新项目的新颖性进行情报学审查,写出有…...

docker安装portainer

1、拉取镜像 docker pull portainer/portainer-ce:latest2、执行 docker run -d --restartalways --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer/data:/data -v /data/portainer/public:/public portainer/portain…...

【Word2Vec】传统词嵌入矩阵训练方法

目录 1. Word2Vec 简介2. Word2Vec 的训练方法2.1 Skip-Gram模型2.2 CBOW(Continuous Bag of Words)模型 3. Word2Vec 中的词嵌入表示4. 训练过程中是否使用独热编码? 1. Word2Vec 简介 Word2Vec 是一种词嵌入模型,主要通过无监督…...

电脑不显示wifi列表怎么办?电脑不显示WiF列表的解决办法

有用户会遇到电脑总是不显示wifi列表的问题,但是不知道要怎么解决。随着无线网络的普及和使用,电脑无法显示WiFi列表的问题有时会让人感到困扰。电脑不显示WiFi列表是很常见的问题,但这并不意味着你无法连接到网络。不用担心,这个…...

详解 Dockerfile:从入门到实践

Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖包打包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化。Dockerfile 是一个文本文件,其中包含了一系列命令,用…...

随机变量的概率分布

第 5 章——概率分布 5.2 随机变量的概率分布 【例5-1】 计算期望值、方差、标准差 【代码框5-1】 计算期望值、方差、标准差 import pandas as pd import numpy as np example5_1 = pd.read_csv(./pydata/example/chap05/example5_1.csv)# 计算期望值 mymean = sum...

Kafka生产者如何提高吞吐量?

批量发送:生产者可以配置 batch.size 参数,将多个消息打包成一个批次发送。这样可以减少网络通信的次数,提高吞吐量。inger.ms:设置 linger.ms 参数,可以让生产者在发送消息前等待一段时间,以便收集更多的消…...

mysql:解决windows启动失败无报错(或长时间未响应)

前言 遇到好多次在修改配置文件后,mysql无法启动的问题了,这里给出一个可能原因的解决方案。 由于mysql需要修改配置文件,所以我在winserver2012服务器上更改了配置文件my.ini mysql5.7配置文件默认地址:C:\ProgramData\MySQL\MyS…...

【山——回文判断】

题目 代码 #include <bits/stdc.h> using namespace std; bool check(int num) {string s to_string(num);int l 0, r s.size() - 1;while (l < r){if (l && s[l] - s[l - 1] < 0)return false;if (s[l] ! s[r--])return false;}if (l && l r…...

FPGA学习笔记#7 Vitis HLS 数组优化和函数优化

本笔记使用的Vitis HLS版本为2022.2&#xff0c;在windows11下运行&#xff0c;仿真part为xcku15p_CIV-ffva1156-2LV-e&#xff0c;主要根据教程&#xff1a;跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 学习笔记&#xff1a;《FPGA学习笔记》索引 FPGA学习笔记#1 HLS简介及…...

欧几里得算法python

一、问题描述 求最大公约数 class Fraction:def __init__(self, a, b):self.a aself.b bx self.gcd(a, b)self.a / xself.b / xdef gcd(self, a, b):while b >0:r a % ba bb rreturn adef zgs(self, a, b):x self.gcd(a, b)return a / x * bdef __add__(self, other…...

【layui】echart的简单使用

图表类型切换&#xff08;柱形图和折线图相互切换&#xff09; <title>会员数据</title><div class"layui-card layadmin-header"><div class"layui-breadcrumb" lay-filter"breadcrumb"><a lay-href""&g…...

ios打包文件上传App Store windows工具

在苹果开发者中心上架IOS APP的时候&#xff0c;在苹果开发者中心不能直接上传打包文件&#xff0c;需要下载mac的xcode这些工具进行上传&#xff0c;但这些工具无法安装在windows或linux电脑上。 这里&#xff0c;我们可以不用xcode这些工具来上传&#xff0c;可以用国内的香…...

vue2项目启用tailwindcss - 开启class=“w-[190px] mr-[20px]“ - 修复tailwindcss无效的问题

效果图 步骤 停止编译"npm run dev"安装依赖 npm install -D tailwindcssnpm:tailwindcss/postcss7-compat postcss^7 autoprefixer^9 创建文件/src/assets/tailwindcss.css&#xff0c;写入内容&#xff1a; tailwind base; tailwind components; tailwind utiliti…...

mysql中数据不存在却查询到记录?

前言 首先看下面的查询语种 select * from AudioKnowledgeChatInfo where AudioId297795550566600706; 查询结果如下 看到上面的查询结果&#xff0c;是不是一脸懵&#xff1f;这audioId明显不对啊&#xff0c;怎么查询到了&#xff1f; 原因剖析 首先我们来看看数据库表…...

vue3+elementplus+虚拟树el-tree-v2+多条件筛选过滤filter-method

筛选条件 <el-inputv-model"searchForm.searchTreeValue"input"searchTreeData"style"flex: 1; margin-right: 0.0694rem"placeholder"请输入要搜索的设备"clearable/><imgclass"refresh-img"src"com_refres…...

新建网站如何公安备案/搜索最多的关键词的排名

尽管非常喜欢Windows&#xff0c;但微软的首席执行官史蒂夫鲍尔默表示&#xff0c;微软将使企业能够更简单地管理更多类型的计算机━━其中包括运行Linux 的计算机。 美国太平洋时区时间本周三&#xff0c;鲍尔默表示&#xff0c;微软已经听取了客户的请求&#xff1a;在Operat…...

厦门市网站建设软件开发公司/seo优化工作内容做什么

ADB和MTP是Android基于USB实现的两个重要功能&#xff0c;极大地方便了用户在PC与Android设备之间的互操作&#xff0c;比方传输文件、安装应用、开发调试应用。 本文讲述怎样在特定软硬件平台下支持Android ADB和MTP功能。 Android版本号: KitKat 4.4.2 Linux内核版本号: 3.10…...

乐搜做网站/国内新闻最新

游戏下载&#xff1a;点击下载工具下载&#xff1a;点击下载精品整合包&#xff1a;点击下载本片作者&#xff1a;披萨免责声明本公众号资料版权归属原作者或原公司所有&#xff0c;本公众号收取的费用仅是分析整理过程中产生的人工成本及其他费用。本公众号资料仅限学习研究使…...

企业网站建设要注意哪方面/代写新闻稿

最后评选出了五大考研经典励志歌曲&#xff1a;: G* z* Q5 Z3 v$ 4 CNO.1&#xff1a;范玮琪 最初的梦想 183票 {4 /6 m2 ?. U NO.2: 张韶涵 隐形的翅膀 116票3 V5 A0 G, Z: a3 z7 NNO.3: 郑智化 水手 61票NO.4: 张雨生 我的未来不是梦 60票NO.5: 许美静…...

合肥专业网站优化价格/天津百度推广电话

FFmpeg都是命令行的&#xff0c;用起来肯定不方便。但是&#xff0c;这对技术宅应该不成问题。下面&#xff0c;我就罗列一些比较实用的使用方法吧。FFmpeg的下载与安装FFmpeg是开源的。但我们不必去下载它的源代码。下载已经编译好的exe/dll即可。可以到http://www.ffmpeg.org…...

滨海做网站价格/站长统计app软件下载官网

获取 nginx编译安装启用与停止测试 001 获取 nginx 可以从以下获取链接中下载需要的版本&#xff0c;可以直接使用 wget 获取。 获取链接 例如 wget http://nginx.org/download/nginx-1.19.3.tar.gz下载完成后利用 tar -zxvf 命令解压。 编译安装 安装依赖包 由于 ngi…...