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

西瓜书读书笔记整理(三)—— 第二章 模型评估与选择

第二章 模型评估与选择

  • 第 2 章 模型评估与选择
    • 2.1 经验误差与过拟合
      • 1. 错误率 / 精度 / 误差
      • 2. 训练误差 / 经验误差 / 泛化误差
      • 3. 过拟合 / 欠拟合
      • 4. 学习能力
      • 5. 模型选择
    • 2.2 评估方法
      • 1. 评估方法概述
      • 2. 留出法
      • 3. 交叉验证法
      • 4. 自助法
      • 5. 调参 / 最终模型
    • 2.3 性能度量
      • 1. 回归任务的性能度量
      • 2. 分类任务性能度量方法 —— 错误率 / 精度
      • 3. 分类任务性能度量方法 —— 查准率 / 查全率 / F1
      • 4. ROC 曲线
      • 5. AUC 曲线
    • 2.4 比较检验
      • 1. 什么是比较验证
      • 2. 假设验证
    • 2.5 偏差与方差
      • 1. 偏差与方差
      • 2. 泛化误差 / 偏差 / 方差 / 噪声

第 2 章 模型评估与选择

2.1 经验误差与过拟合

1. 错误率 / 精度 / 误差

错误率(error rate):分类错误的样本数占样本总数的比例。

精度(accuracy):分类正确的样本数占样本总数的比例。

误差(error):学习器的实际预测输出与样本的真实输出质检的差异。

2. 训练误差 / 经验误差 / 泛化误差

**训练误差(training error)**或 经验误差(empirical error):学习器在训练集上的误差。

泛化误差(generalization error):模型在新样本上的误差。

3. 过拟合 / 欠拟合

过拟合(overfitting) 指的是机器学习模型在训练数据集上表现非常好,但在新的测试数据上表现较差的情况。过拟合的主要原因是模型过于复杂,拟合了训练数据集中的噪声和细节,导致泛化能力差。简单来说,过拟合是指模型过分追求“记忆”训练数据集,而忽略了“理解”数据背后的规律,导致在新的数据上表现不佳。

过拟合可以通过以下方法来避免:

  • 增加更多的训练数据,使得模型更具泛化能力。
  • 减少特征数量,避免过于复杂的模型。
  • 增加正则化项,如L1、L2正则化等,使得模型更加平滑。
  • 使用dropout等技巧随机削弱一部分神经元的输出,减少模型的复杂性。

欠拟合(underfitting) 指的是机器学习模型在训练数据集上和测试数据集上的表现都比较差,这意味着模型没有很好地捕捉到数据的规律和模式。欠拟合的主要原因是模型过于简单,无法拟合数据集的复杂度和非线性关系。简单来说,欠拟合是指模型过于简单,无法捕捉到数据集的全部信息。

欠拟合可以通过以下方法来避免:

  • 增加更多的特征,以更好地捕捉数据的复杂性和非线性关系。
  • 增加模型的复杂度,如增加层数或节点数等。
  • 减少正则化项的强度,使得模型更加灵活。
  • 使用更复杂的算法或模型,如神经网络等。

需要注意的是,过度拟合和欠拟合都会导致模型的泛化能力下降,因此需要在两者之间进行权衡,选择最适合的模型和算法。

4. 学习能力

机器学习中模型的学习能力指的是模型通过训练数据学习到数据之间的关系和规律的能力。具体来说,模型的学习能力可以体现在以下方面:

  • 模型的表示能力:模型的表示能力越强,它能够拟合的函数空间就越大,因此可以更好地逼近数据的真实分布。

  • 模型的泛化能力:泛化能力指的是模型对于新数据的预测能力。当模型的泛化能力很强时,它可以对未见过的数据做出准确的预测。反之,如果模型的泛化能力很差,则无法对新数据进行准确的预测。

  • 模型的训练能力:模型的训练能力指的是它能够从训练数据中学习到什么程度。当模型的训练能力很强时,它可以从少量的训练数据中学习到更多的信息,从而更好地逼近数据的真实分布。

  • 模型的收敛速度:模型的收敛速度指的是它学习到数据分布的速度。当模型的收敛速度很快时,它可以在较短的时间内学习到数据之间的关系和规律。

在机器学习中,选择一个具有良好学习能力的模型是非常重要的。不同的机器学习算法和模型具有不同的学习能力,因此需要根据具体的问题和数据选择最适合的算法和模型。

学习能力是否 “过于强大”,是由学习算法和数据内涵共同决定的。

5. 模型选择

在机器学习中,选择合适的模型对于建立一个成功的机器学习系统来说非常重要。以下是一些常见的模型选择方法:

  • 经验法则:根据问题的性质和数据的特点选择合适的模型。例如,如果数据具有线性关系,可以选择线性回归模型;如果数据具有非线性关系,可以选择支持向量机或神经网络等非线性模型。

  • 交叉验证:使用交叉验证方法评估不同模型的性能,并选择最佳模型。交叉验证将数据集分为训练集和测试集,然后多次训练和测试模型,并计算平均测试误差。通过比较不同模型的测试误差,可以选择性能最佳的模型。

  • 正则化方法:使用正则化方法对不同的模型进行比较,选择最佳的模型。正则化方法通过对模型参数进行约束来避免过拟合,同时减少模型的复杂度,从而提高模型的泛化能力。

  • 模型融合方法:使用多个模型组合来提高预测性能。模型融合方法可以是简单的平均或加权平均,也可以是基于模型的集成方法,例如随机森林和Boosting等。

  • 模型选择工具:使用一些开源的模型选择工具,例如scikit-learn和TensorFlow等,这些工具提供了多种不同的机器学习算法和模型,同时提供了评估和比较不同模型的方法。

需要注意的是,在选择模型时需要考虑多个因素,例如数据的特点、问题的性质、模型的复杂度、模型的训练时间等等。选择合适的模型需要综合考虑这些因素,并根据具体的问题和需求来进行选择。

2.2 评估方法

1. 评估方法概述

通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此,需使用一个 “测试集(testomg set)” 来测试学习器对新样本的判别能力,然后以测试集上的 “测试误差(tesing error)” 作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需要注意的是,测试集应该尽可能与训练集互斥,即测试集尽量不在训练集中出现、未在训练过程中使用过。

2. 留出法

留出法(hold-out)直接将数据集 D D D 划分为两个互斥的集合,其中一个集合作为训练集 S S S,另外一个作为测试集 T T T,即 D = S ⋃ T D=S \bigcup T D=ST S ⋂ T = ⊘ S \bigcap T = \oslash ST=。在 S S S 上训练出模型后,用 T T T 来评估其测试误差,作为对泛化误差的估计。

3. 交叉验证法

交叉验证法(cross valida tion)先将数据集 D D D 划分为 k k k 个大小相似的互斥子集,即 D = D 1 ∪ D 2 ∪ . . . ∪ k D=D_1 \cup D_2 \cup ...\cup_k D=D1D2...k D i ⋂ D j = ⊘ D_i \bigcap D_j =\oslash DiDj=。每个子集 D i D_i Di 都尽可能保持数据分布的一致性,即从 D D D 中通过分层采样得到。然后,每次用 k − 1 k-1 k1 个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得 k k k 组训练 / 测试集,从而可进行 k k k 次训练和测试,最终返回的是这 k k k 个测试结果的均值。

显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k k k 的取值,为强调这一点,通常把交叉验证法称为 “ k k k 折交叉验证” ( k k k-fold cross validation)。

k k k 最常用的取值是 10,此时称为 10 折交叉验证;其他常用的 k k k 值有 5、20 等。

4. 自助法

自助法(bootstrapping)是一种非参数统计方法,用于从有限的样本数据集中估计统计量的分布和置信区间。自助法是通过从原始数据集中随机抽取样本形成新的数据集,并重复这个过程多次来得到估计统计量的分布。这个过程可以产生多个样本数据集,每个数据集的样本数和原始数据集相同,但可能包含重复的样本数据。

自助法的基本思想是通过对原始数据进行有放回的抽样来模拟从总体中抽样。由于样本的重复采样,部分样本可能在某次采样中被重复选择,而另一些样本可能在某些采样中没有被选择。这样可以形成一个更广泛的样本空间,并且可以通过这些不同的样本数据集来估计统计量的置信区间。

自助法可以用于解决小样本数据集的统计问题,并且具有一定的鲁棒性和准确性。例如,在机器学习中,自助法可以用于估计模型参数的置信区间,从而评估模型的稳定性和准确性。自助法还可以用于特征选择、模型选择和模型融合等问题,它是一种常用的非参数统计方法。

5. 调参 / 最终模型

大多数学习算法都有些参数 (parameter) 需要设定,参数配置不同 ,学得模型的性能往往有显著差别,因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的 “参数调节” 或简称 “调参” (parameter tuning)。

2.3 性能度量

1. 回归任务的性能度量

回归任务最常用的性能度量是 “均方误差”(mean squared error)。

E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 (2.2) E(f ; D)=\frac{1}{m} \sum_{i=1}^m\left(f\left(\boldsymbol{x}_i\right)-y_i\right)^2 \tag{2.2} E(f;D)=m1i=1m(f(xi)yi)2(2.2)

更一般的,对于数据分布 D \mathcal{D} D 和概率密度函数 p ( ⋅ ) p(\cdot) p(),均方误差可描述为

E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x (2.3) E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}}(f(\boldsymbol{x})-y)^2 p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} \tag{2.3} E(f;D)=xD(f(x)y)2p(x)dx(2.3)

2. 分类任务性能度量方法 —— 错误率 / 精度

错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。对样本集 D \mathcal{D} D,分类错误率定义为

E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) (2.4) E(f ; D)=\frac{1}{m} \sum_{i=1}^m \mathbb{I}\left(f\left(\boldsymbol{x}_i\right) \neq y_i\right) \tag{2.4} E(f;D)=m1i=1mI(f(xi)=yi)(2.4)

精度则定义为

acc ⁡ ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) . (2.5) \begin{aligned} \operatorname{acc}(f ; D) & =\frac{1}{m} \sum_{i=1}^m \mathbb{I}\left(f\left(\boldsymbol{x}_i\right)=y_i\right) \\ & =1-E(f ; D) . \end{aligned} \tag{2.5} acc(f;D)=m1i=1mI(f(xi)=yi)=1E(f;D).(2.5)

更一般的,对于数据分布 D \mathcal{D} D 和概率密度函数 p ( ⋅ ) p(\cdot) p(),错误率与精度可分别描述为

E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x ) d x (2.6) E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x}) \neq y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} \tag{2.6} E(f;D)=xDI(f(x)=y)p(x)dx(2.6)

acc ⁡ ( f ; D ) = ∫ x ∼ D I ( f ( x ) = y ) p ( x ) d x = 1 − E ( f ; D ) (2.7) \begin{aligned} \operatorname{acc}(f ; \mathcal{D}) & =\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x})=y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} \\ & =1-E(f ; \mathcal{D}) \tag{2.7} \end{aligned} acc(f;D)=xDI(f(x)=y)p(x)dx=1E(f;D)(2.7)

3. 分类任务性能度量方法 —— 查准率 / 查全率 / F1

对于二分类问题,如下所示:

全称真实值(标签,label)预测值(predict)
TPTrue Positive11
FPFalse Positive01
TNTrue Negative00
FNFalse Negative10

查准率(precision)

P = T P T P + F P (2.8) P=\frac{T P}{T P+F P} \tag{2.8} P=TP+FPTP(2.8)

查全率(recall)

R = T P T P + F N (2.9) R=\frac{T P}{T P+F N} \tag{2.9} R=TP+FNTP(2.9)

更常用的是 F 1 F1 F1 度量:

F 1 = 2 × P × R P + R = 2 × T P 样例总数  + T P − T N .  (2.10) F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} \text {. } \tag{2.10} F1=P+R2×P×R= 样例总数 +TPTN2×TP(2.10)

4. ROC 曲线

ROC(Receiver Operating Characteristic)曲线是一种用于评估二元分类器性能的图形工具。ROC曲线以真阳性率(True Positive Rate,TPR)为纵坐标,以假阳性率(False Positive Rate,FPR)为横坐标,用于衡量分类器的敏感性和特异性。

T P R = T P T P + F N (2.18) \mathrm{TPR}=\frac{T P}{T P+F N} \tag{2.18} TPR=TP+FNTP(2.18)

F P R = F P T N + F P (2.19) \mathrm{FPR}=\frac{F P}{T N+F P} \tag{2.19} FPR=TN+FPFP(2.19)

在ROC曲线中,每个点代表分类器在不同的阈值下的TPR和FPR。通过改变分类器的阈值,可以得到不同的点,并将这些点连接起来得到ROC曲线。曲线下面积(Area Under Curve,AUC)可以用来衡量分类器的性能,AUC的取值范围为0.5到1,AUC越大表示分类器的性能越好。

ROC曲线的优点在于不受分类器阈值的影响,同时可以通过比较不同分类器的ROC曲线来评估它们的性能。ROC曲线也适用于不平衡数据集的分类问题,其中一类样本数量较少,例如医学诊断和欺诈检测等应用场景。

需要注意的是,ROC曲线不能直接用于比较多类别分类器的性能。对于多类别分类问题,可以使用一些衍生自ROC曲线的评估指标,例如微平均(micro-averaging)和宏平均(macro-averaging)等。

下面是一个示例ROC曲线:

在这里插入图片描述

在这个例子中,横轴是假阳性率(False Positive Rate,FPR),纵轴是真阳性率(True Positive Rate,TPR)。假阳性率是指实际为负样本但被错误地预测为正样本的样本占所有负样本的比例,真阳性率是指实际为正样本且被正确地预测为正样本的样本占所有正样本的比例。

ROC曲线显示了分类器在不同阈值下的性能,阈值从左上角到右下角逐渐增加。曲线下面积(Area Under Curve,AUC)为0.91,说明该分类器的性能很好。通常,AUC的取值范围为0.5到1,AUC越大表示分类器的性能越好。

在实际应用中,可以根据ROC曲线选择合适的分类器和阈值,以达到最佳的分类性能。

5. AUC 曲线

AUC(Area Under Curve)曲线是ROC(Receiver Operating Characteristic)曲线下方的面积,用于评估二元分类器的性能。AUC曲线常用于评估分类器的准确性、鲁棒性和可靠性。

A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) (2.20) \mathrm{AUC}=\frac{1}{2} \sum_{i=1}^{m-1}\left(x_{i+1}-x_i\right) \cdot\left(y_i+y_{i+1}\right) \tag{2.20} AUC=21i=1m1(xi+1xi)(yi+yi+1)(2.20)

AUC的取值范围在0.5到1之间,其中0.5表示随机分类器,而1表示完美分类器。在AUC为0.5到1之间的情况下,AUC值越大,分类器的性能越好。AUC曲线的斜率越大,分类器的性能也越好。

AUC曲线可以解决在不同阈值下分类器性能的变化问题,并且可以对不同的分类器进行比较。对于大多数实际问题,AUC都是一个有用的度量标准。

需要注意的是,AUC曲线并不适用于多类别分类问题,因为ROC曲线只适用于二元分类问题。在多类别分类问题中,可以使用一些其他的评估指标,例如混淆矩阵、准确率、召回率等。

以下是一个AUC曲线的例子:
在这里插入图片描述

这个例子展示了一个分类器的AUC曲线。曲线下方的面积(AUC)为0.87,表示该分类器的性能相对较好。在这个例子中,分类器的预测结果可以根据阈值进行分类,阈值从左上角到右下角逐渐增加。在最优阈值处,该分类器的真阳性率(TPR)为0.75,假阳性率(FPR)为0.15。

在实际应用中,AUC曲线可以用来选择最佳分类器和阈值,以最大化分类性能。由于AUC曲线不受分类器阈值的影响,因此它通常比其他评估指标更适合评估分类器的性能。

2.4 比较检验

1. 什么是比较验证

在机器学习中,比较验证是一种通过比较不同模型的性能来选择最佳模型的方法。比较验证通常涉及以下步骤:

  • 数据集划分:将数据集划分为训练集和测试集。通常使用交叉验证方法来确保模型在不同的数据集上进行训练和测试。

  • 模型训练:使用训练集训练不同的模型。

  • 模型评估:使用测试集评估模型的性能,并计算模型的指标,如准确率、召回率、F1分数、AUC等。

  • 模型比较:比较不同模型的性能指标,并选择最佳模型。

比较验证的目的是找到最佳的模型,以在未知数据上实现最佳性能。由于不同的模型在不同的数据集上表现可能不同,因此比较验证是一种重要的机器学习技术。通常,比较验证需要在多个数据集上进行,以避免因特定数据集导致的偏差。

比较验证可以使用多种方法,如留出法、交叉验证和自助法等。其中,交叉验证是最常用的方法之一,它可以有效地利用数据,并减少估计误差。交叉验证通常可以分为k折交叉验证、留一交叉验证等。

2. 假设验证

在机器学习中,假设验证是一种评估模型的泛化能力的方法,也称为模型选择。假设验证的基本思想是将数据集划分为训练集、验证集和测试集。模型在训练集上训练,在验证集上进行验证和参数调整,最终在测试集上进行测试。

假设验证通常涉及以下步骤:

  1. 数据集划分:将数据集划分为训练集、验证集和测试集。训练集用于模型训练,验证集用于模型选择和参数调整,测试集用于模型测试。

  2. 模型训练:使用训练集训练模型。

  3. 模型选择:使用验证集评估不同模型的性能,并选择最佳模型。

  4. 参数调整:使用验证集调整模型的参数。

  5. 模型测试:使用测试集评估最终模型的性能。

假设验证的目的是选择最佳模型,并避免过度拟合或欠拟合。过度拟合是指模型在训练数据上表现良好,但在测试数据上表现较差。欠拟合是指模型无法捕捉数据的复杂性,导致在训练和测试数据上都表现不佳。假设验证可以帮助选择最佳模型,以最大限度地提高模型的泛化性能。

假设验证可以使用多种方法,如留出法、交叉验证和自助法等。其中,交叉验证是最常用的方法之一,它可以有效地利用数据,并减少估计误差。交叉验证通常可以分为k折交叉验证、留一交叉验证等。

2.5 偏差与方差

1. 偏差与方差

在机器学习中,方差(Variance)和偏差(Bias)是模型的两个重要性质。它们通常被用来描述模型的复杂度和泛化性能。

偏差是指模型的预测结果与真实结果的平均差异,也称为模型的拟合能力。低偏差的模型通常具有较好的拟合能力,能够在训练数据上获得较好的性能。然而,当模型太简单时,它可能无法捕捉数据的复杂性,导致欠拟合。因此,适当的偏差通常需要保证模型具有一定的灵活性和能力,以提高其泛化性能。

方差是指模型在不同训练数据集上预测结果的差异,也称为模型的泛化能力。高方差的模型通常具有过拟合的倾向,即在训练数据上表现良好,但在测试数据上表现较差。过度复杂的模型通常容易过拟合,因为它们可以记忆训练数据中的噪声和异常值,而不是学习数据的真实模式。

为了平衡偏差和方差,可以使用正则化方法、交叉验证和集成学习等技术来调整模型的复杂度和参数。例如,正则化可以通过添加惩罚项来限制模型的复杂度,从而减少方差。交叉验证可以用于估计模型的泛化性能,并选择最佳模型。集成学习可以通过组合多个模型的预测结果来减少方差和偏差。

在这里插入图片描述

2. 泛化误差 / 偏差 / 方差 / 噪声

泛化误差可分解为偏差、方差与噪声之和。

E ( f ; D ) = bias ⁡ 2 ( x ) + var ⁡ ( x ) + ε 2 (2.42) E(f ; D)=\operatorname{bias}^2(\boldsymbol{x})+\operatorname{var}(\boldsymbol{x})+\varepsilon^2 \tag{2.42} E(f;D)=bias2(x)+var(x)+ε2(2.42)

Smileyan
2023.05.01 01:22

相关文章:

西瓜书读书笔记整理(三)—— 第二章 模型评估与选择

第二章 模型评估与选择 第 2 章 模型评估与选择2.1 经验误差与过拟合1. 错误率 / 精度 / 误差2. 训练误差 / 经验误差 / 泛化误差3. 过拟合 / 欠拟合4. 学习能力5. 模型选择 2.2 评估方法1. 评估方法概述2. 留出法3. 交叉验证法4. 自助法5. 调参 / 最终模型 2.3 性能度量1. 回归…...

AcWing算法提高课-1.3.6货币系统

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 给你一个n种面值的货币系统&#xff0c;求组成面值为m的货币有多少种方案。 输入格式 第一行&#xff0c;包含两个整数n和m。 接…...

vue3回到上一个路由页面

学习链接 Vue Router获取当前页面由哪个路由跳转 在Vue3的setup中如何使用this beforeRouteEnter 在这个路由方法中不能访问到组件实例this&#xff0c;但是可以使用next里面的vm访问到组件实例&#xff0c;并通过vm.$data获取组件实例上的data数据getCurrentInstance 是vue3提…...

Linux三种网络模式 | 仅主机、桥接、NAT

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Linux三种网络模式 仅主机模式&#xff1a;虚拟机只能访问物理机&#xff0c;不能上网 桥接模式&#xff1a;虚拟机和物理机连接同一网络&#xff0c;虚拟机和物理机…...

数据库设计与前端框架

数据库设计与前端框架 学习目标&#xff1a; 理解多租户的数据库设计方案 熟练使用PowerDesigner构建数据库模型理解前端工程的基本架构和执行流程 完成前端工程企业模块开发 多租户SaaS平台的数据库方案 多租户是什么 多租户技术&#xff08;Multi-TenancyTechnology&a…...

技术探秘:揭秘Bean Factory与FactoryBean的区别!

大家好&#xff0c;我是小米&#xff0c;一个热衷于技术分享的29岁小编。今天&#xff0c;我们来聊一聊在Spring框架中常用的两个概念&#xff1a;beanFactory和FactoryBean。它们虽然看似相似&#xff0c;但实际上有着不同的用途和作用。让我们一起来揭开它们的神秘面纱吧&…...

MD-MTSP:遗传算法GA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、多仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…...

技术面试的终极指南:助你取得成功的关键步骤

背景 技术面试是许多求职者最关键的一环&#xff0c;因为它评估了你在特定领域的知识和技能。无论你是刚毕业的大学应届生&#xff0c;还是有多年工作经验的职场老兵&#xff0c;准备充分是成功面试的关键。 这篇文章将提供一系列关键步骤&#xff0c;帮助你充分准备和展现自己…...

Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投

随着更多的公链底层面向市场&#xff0c;通过参与早期测试在主网上线后获得激励成为了行业的一个热点话题&#xff0c;在 Apots、Arbitrum One、Optimism等陆续发放了测试空投后&#xff0c;以 Layer3为主要特性的 Nautilus Chain 也在前不久明确表示将会有空投&#xff0c;引发…...

Python爬虫(三):BeautifulSoup库

BeautifulSoup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库&#xff0c;它能够将 HTML 或 XML 转化为可定位的树形结构&#xff0c;并提供了导航、查找、修改功能&#xff0c;它会自动将输入文档转换为 Unicode 编码&#xff0c;输出文档转换为 UTF-8 编码。 Beauti…...

Python使用CV2库捕获、播放和保存摄像头视频

Python使用CV2库捕获、播放和保存摄像头视频 特别提示&#xff1a;CV2指的是OpenCV2&#xff08;Open Source Computer Vision Library&#xff09;&#xff0c;安装的时候是 opencv_python&#xff0c;但在导入的时候采用 import cv2。 若想使用cv2库必须先安装&#xff0c;P…...

[数据结构 -- C语言] 栈(Stack)

目录 1、栈 1.1 栈的概念及结构 2、栈的实现 2.1 接口 3、接口的实现 3.1 初始化 3.2 入栈/压栈 3.3 出栈 3.4 获取栈顶元素 3.5 获取栈中有效元素个数 3.6.1 bool 类型接口 3.6.2 int 类型接口 3.7 销毁栈 4、完整代码 5、功能测试 1、栈 1.1 栈的概念及结构 …...

【我的C++入门之旅】(上)

前言 C的发展史 1979年&#xff0c;贝尔实验室的Bjarne等人试图分析unix内核的时候&#xff0c;试图将内核模块化&#xff0c;但是发现C语言有很多的不足之处&#xff0c;于是在C语言的基础上进行扩展&#xff0c;增加了类的机制&#xff0c;完成了一个可以运行的预处理程序&…...

dcdc降压电路原理及仿真

在之前的文章 DCDC 降压芯片基本原理及选型主要参数介绍 中已经大致讲解了dcdc降压电路的工作原理&#xff0c;今天再结合仿真将buck电路工作过程讲一讲。 基本拓扑 上图为buck电路的基本拓扑结构&#xff0c;开关打到1&#xff0c;电感充电&#xff1b;开关打到0&#xff0c;…...

搭建Redis主从集群+哨兵+代理predixy

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Redis是什么&#xff1f;二、搭建Redis集群步骤1.环境和版本2.Redis 安装部署3.主从同步配置4.哨兵模式配置5.代理predixy配置 总结 前言 提示&#xff1a…...

Syncthing文件同步 - 免费搭建开源的文件自动同步服务器并公网远程访问【私人云盘】

文章目录 1. 前言2. Syncthing网站搭建2.1 Syncthing下载和安装2.2 Syncthing网页测试2.3 注册安装cpolar内网穿透 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 在数据爆炸的当下&#xff0c;每天都会产生海量的数据&#xff0c;这些…...

SQL——索引

&#x1f4a1; 索引 在关系型数据库中&#xff0c;索引是一种单独的、物理上的对数据库表中的一列或多列的值进行排序的一种存储结构&#xff0c;他是某个表中的一列或着若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单&#xff08;类似于图书目录&#x…...

Java代码组成部分

一、构造函数与默认构造函数 构造函数&#xff0c;是一种特殊方法。主要用来在创建对象时初始化对象&#xff0c;即为对象成员变量赋初始值&#xff0c;总与new运算符一起使用在创建对象的语句中。 /** * 矩形 */ class Rectangle {/*** 构造函数*/public Rectangle(int leng…...

vue2和vue3有啥区别,vue3的优点有哪些?

Vue.js 是一种流行的 JavaScript 框架&#xff0c;用于开发现代 Web 应用程序。Vue.js 具有简单易用、高效和灵活等特点&#xff0c;能够极大地提高开发效率并改进用户体验。Vue.js 一直在不断更新和改进&#xff0c;它的最新版本是 Vue 3。 在本文中&#xff0c;我们将探讨 V…...

就业内推 | 上市公司招网工,最高25k*14薪,六险一金

01 锐捷网络 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、承接本产品线&#xff08;无线或数通&#xff09;所有咨询、故障、网络变更等业务&#xff0c;响应内外部客户的业务响应需求&#xff0c;需要值班。 2、同时作为产品线技术力的核心&#xff0c;需要负责…...

低代码让开发变得不再复杂

文章目录 前言低代码 VS 传统开发为什么选择IVX&#xff1f;平台比对总结 前言 在数字化的时代背景下&#xff0c;企业都面临巨大的数字化转型的挑战。为了应对这样的挑战&#xff0c;企业软件开发工具和平台也在不断革新和发展。低代码开发平台随之应运而生&#xff0c;成为了…...

【前端客栈】使用CSS实现畅销书排行榜页面

&#x1f4ec;&#x1f4eb;hello&#xff0c;各位小伙伴们&#xff0c;我是小浪。大家都知道&#xff0c;我最近是在更新各大厂的软件测试开发的面试真题&#xff0c;也是得到了很大的反馈和好评&#xff0c;几位小伙伴也是成功找到了测开的实习&#xff0c;非常不错。如果能前…...

【周末闲谈】超越ChatGPT?科大讯飞星火认知大模型

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 前言星火名字的由来科大讯飞星火落地应用演示赶超ChatGPT的底气在哪里?“硬…...

第N2周:中文文本分类-Pytorch实现

目录 一、前言二、准备工作三、数据预处理1.加载数据2.构建词典3.生成数据批次和迭代器 三、模型构建1. 搭建模型2. 初始化模型3. 定义训练与评估函数 四、训练模型1. 拆分数据集并运行模型 一、前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 …...

Salesforce许可证和版本有什么区别,购买帐号时应该如何选择?

Salesforce许可证分配给特定用户&#xff0c;授予他们访问Salesforce产品和功能的权限。Salesforce版本和许可证是不同的概念&#xff0c;但极易混淆。 Salesforce版本&#xff1a;这是对组织购买的Salesforce产品和功能的访问权限。大致可分为Essentials、Professional、Ente…...

接口测试怎么做?全网最详细从接口测试到接口自动化详解,看这篇就够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 抛出一个问题&…...

DataStore入门及在项目中的使用

首先给个官网的的地址&#xff1a;应用架构&#xff1a;数据层 - DataStore - Android 开发者 | Android Developers 小伙伴们可以直接看官网的资料&#xff0c;本篇文章是对官网的部分细节进行补充 一、为什么要使用DataStore 代替SharedPreferences SharedPreferences&a…...

用Python爬取中国各省GDP数据

介绍 在数据分析和经济研究中&#xff0c;了解中国各省份的GDP数据是非常重要的。然而&#xff0c;手动收集这些数据可能是一项繁琐且费时的任务。幸运的是&#xff0c;Python提供了一些强大的工具和库&#xff0c;使我们能够自动化地从互联网上爬取数据。本文将介绍如何使用P…...

深度学习-第T5周——运动鞋品牌识别

深度学习-第T5周——运动鞋品牌识别 深度学习-第T5周——运动鞋品牌识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 …...

自媒体的孔雀效应:插根鸡毛还是专业才华?

自媒体时代&#xff0c;让许多原本默默无闻的人找到了表达自己的平台。有人声称&#xff0c;现在这个时代&#xff0c;“随便什么人身上插根鸡毛就可以当孔雀了”。可是&#xff0c;事实真的如此吗&#xff1f; 首先&#xff0c;我们不能否认的是&#xff0c;自媒体确实为大众提…...