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

机器学习2

一、模型评估方法

1.1 K折交叉验证法(K-Fold Cross Validation)

1.1.1 定义

K折交叉验证法是一种用于评估模型性能的技术。它将数据集分为K个相等的子集,模型会轮流使用一个子集作为测试集,其余K-1个子集作为训练集。这个过程会重复K次,最后取K次结果的平均作为模型的最终性能评价。

1.1.2 具体步骤
  1. 将数据集随机分成K个子集。
  2. 每次选择一个子集作为测试集,其他K-1个子集作为训练集。
  3. 对每个子集重复训练和测试K次。
  4. 取K次测试结果的平均值,作为最终模型评估结果。
1.1.3 实例

假设我们有1000个样本,使用5折交叉验证法。我们将数据分成5份:

  • 第一次用第1组作为测试集,其他4组作为训练集;
  • 第二次用第2组作为测试集,其他4组作为训练集;
  • 如此重复5次,最后取5次结果的平均值作为最终性能评估。
1.1.4 优缺点
  • 优点:能够充分利用数据集,减少评估的偏差,避免过拟合,适合样本较少的场景。
  • 缺点:计算开销较大,尤其K值较大时。

1.2 留1法(Leave-One-Out Cross Validation)

1.2.1 定义

留1法是K折交叉验证法的极端形式。每次只留出一个样本作为测试集,其余所有样本作为训练集。这一过程对每个样本重复多次,每次用一个样本做测试集,其余样本做训练集。

1.2.2 实例

假设我们有100个样本,留1法会重复训练100次,每次使用99个样本作为训练集,1个样本作为测试集。最后将100次测试结果取平均值作为模型的最终评估结果。

1.2.3 优缺点
  • 优点:使用了最大量的训练数据,适合小数据集,模型能够得到最精细的评估。
  • 缺点:计算代价非常高,尤其当数据量较大时,每次只测试一个样本,效率低。

1.3 自助法(Bootstrap)

1.3.1 定义

自助法是一种通过有放回抽样的方法来生成训练集和测试集。它从原始数据集中有放回地抽取数据,形成训练集,剩余未被抽到的样本组成测试集。

1.3.2 实例

假设我们有100个样本,我们可以从中有放回地抽取100次(可能出现重复的样本),生成训练集,剩下未抽中的样本作为测试集。

1.3.3 优缺点
  • 优点:适合样本数较小的场景,有放回抽样可以增加数据的多样性。
  • 缺点:由于有放回抽样,有可能多个样本被多次选中,导致训练集和测试集可能存在较大的偏差。

1.4 留出法

1.4.1 数据集划分
  • 首先将数据集随机划分为两个不相交的子集:
    • 训练集(Training Set):用于模型训练,包含大部分的数据,一般占总数据的 70% - 80%。
    • 测试集(Test Set):用于模型评估,包含剩余的数据,通常占总数据的 20% - 30%。
1.4.2 模型训练
  • 使用训练集来训练模型,让模型学习数据的模式和特征。
1.4.3 模型评估
  • 训练完模型后,用测试集评估模型的泛化能力,测量模型在未见过的数据上的表现。
1.4.4 优缺点
1.4.4.1 优点
  • 简单直观:留出法的实现和理解都非常简单,只需要一次数据划分和一次模型评估。
  • 快速:由于仅需训练一次模型,计算代价较低,适合大数据集或当模型训练开销较大时使用。
1.4.4.2 缺点
  • 不稳定:留出法对数据划分的方式较为敏感,不同的划分方式可能导致模型性能的变化。尤其在数据量较小时,不同的训练集和测试集划分可能导致较大的评估波动。
  • 数据利用不足:留出法只使用了一部分数据进行模型训练,而没有充分利用全部数据。这可能会导致模型在小数据集上效果较差。
1.4.5 多次留出法

为了解决留出法可能出现的不稳定问题,可以使用多次留出法。其做法是多次随机划分数据集,每次重新训练和评估模型,最后将多次评估结果取平均,作为模型的最终评估结果。

1.4.6 实例解释

假设我们有一个包含 1000 个样本的数据集,想通过留出法评估一个分类模型的表现:

  1. 我们随机将数据集划分为 训练集(800 个样本)和 测试集(200 个样本)。
  2. 使用这 800 个样本来训练模型,模型根据这些样本学习如何进行分类。
  3. 训练完成后,用剩余的 200 个样本(测试集)来评估模型的性能,计算模型在测试集上的准确率、查准率、查全率等评估指标。
  4. 模型的最终评估结果基于测试集的表现。
1.4.7 适用场景

留出法适用于以下场景:

  • 数据量较大时:在大数据集上,划分一部分数据作为测试集通常足以有效评估模型的表现。
  • 模型训练代价较高时:如果模型训练需要大量时间或资源,留出法可以减少计算负担。

总结来说,留出法是一种快速简单的模型评估方法,但由于它仅进行一次数据划分,可能导致评估结果不稳定。为了获得更稳定的评估结果,可以通过多次留出法来改进这一问题。


二、分类模型评估指标

2.1 混淬矩阵(Confusion Matrix)

2.1.1 定义

混淬矩阵是评估分类模型表现的重要工具,用于将分类结果划分为四类:

  • 真正例(TP):模型正确预测为正的样本数。
  • 假正例(FP):模型错误预测为正的样本数。
  • 真负例(TN):模型正确预测为负的样本数。
  • 假负例(FN):模型错误预测为负的样本数。
2.1.2 实例

假设我们在癌症诊断中,有如下结果:

  • 真正例(TP) = 40:正确诊断出40名患者患病。
  • 假正例(FP) = 10:10名健康人被错误诊断为患病。
  • 真负例(TN) = 45:正确识别出45名健康患者。
  • 假负例(FN) = 5:5名患病患者被漏诊。
2.1.3 混淬矩阵相关指标
  • 准确率(Accuracy):模型正确预测的比例。
    [
    \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
    ]
  • 查准率(Precision):预测为正类的样本中,真正为正类的比例。
    [
    \text{Precision} = \frac{TP}{TP + FP}
    ]
  • 查全率(Recall):实际为正类的样本中,模型正确识别的比例。
    [
    \text{Recall} = \frac{TP}{TP + FN}
    ]
  • F1分数:查准率和查全率的调和平均数,综合考虑二者的平衡。
    [
    F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
    ]

2.2 查准率与查全率

2.2.1 查准率(Precision)

查准率(又称精确率)衡量的是模型预测为正类的样本中,有多少真正为正类。查准率高,表示模型的误报率低

  • 公式
    [
    \text{Precision} = \frac{TP}{TP + FP}
    ]
2.2.2 查全率(Recall)

查全率(又称召回率)衡量的是实际正类的样本中,模型能识别出多少正类。查全率高,表示模型的漏报率低

  • 公式
    [
    \text{Recall} = \frac{TP}{TP + FN}
    ]
2.2.3 查准率和查全率的关系
  • 查准率和查全率的权衡:查准率和查全率通常存在冲突关系,查准率高时,查全率往往较低,反之亦然。例如:
    • 查准率高:模型预测时非常谨慎,只预测非常有把握的样本为正类,但可能漏掉一些实际的正类,导致查全率下降。
    • 查全率高:模型预测时比较宽松,尽可能多地预测为正类,虽然能够捕捉大多数正类,但可能会有较高的误报率,导致查准率下降。
2.2.4 实例

假设模型预测了100个样本,其中有如下结果:

  • 真正例(TP)= 80
  • 假正例(FP)= 20
  • 假负例(FN)= 10

计算查准率和查全率:

  • 查准率:( \text{Precision} = \frac{80}{80 + 20} = 0.8 )
  • 查全率:( \text{Recall} = \frac{80}{80 + 10} = 0.89 )

2.3 F1分数

2.3.1 定义

F1分数是查准率和查全率的调和平均数,综合衡量模型在查准率和查全率之间的平衡

2.3.2 公式

[
F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
]

2.3.3 解释

F1分数的目的是在查准率和查全率之间找到一个平衡点,尤其在数据不平衡时,它是非常有用的指标。F1 分数越高,说明模型的查准率和查全率之间的平衡越好。

2.3.4 实例

假设查准率为0.8,查全率为0.89:
[
F1 = 2 \times \frac{0.8 \times 0.89}{0.8 + 0.89} = 0.844
]
F1分数为0.844,表示查准率和查全率之间有一个较好的平衡。


2.4 Fβ分数

2.4.1 定义

Fβ分数F1分数 的一种变体,用来强调查准率(Precision)和查全率(Recall)之间的不同权重。β 参数控制了查全率和查准率的相对重要性:

  • β > 1 时,更注重查全率,适合漏报代价较高的场景。
  • β < 1 时,更注重查准率,适合误报代价较高的场景。
  • β = 1 时,Fβ 分数就是标准的 F1 分数,查准率和查全率同等重要。
2.4.2 公式

[
F_\beta = (1 + \beta^2) \times \frac{\text{Precision} \times \text{Recall}}{(\beta^2 \times \text{Precision}) + \text{Recall}}
]
其中,β 用于调节查全率和查准率之间的平衡。

2.4.3 解释
  • β > 1:查全率的权重增加,模型更关注减少漏报(FN),适用于需要捕捉尽可能多的正类样本的场景(如医疗诊断中漏诊的代价较大)。
  • β < 1:查准率的权重增加,模型更关注减少误报(FP),适用于需要减少误报的场景(如垃圾邮件过滤,错误判断正常邮件为垃圾邮件的代价较高)。
2.4.4 实例

假设模型的查准率为0.75,查全率为0.85,且我们希望更关注查全率,因此选择 β = 2。计算 F2 分数:
[
F_2 = (1 + 2^2) \times \frac{0.75 \times 0.85}{(2^2 \times 0.75) + 0.85} = 5 \times \frac{0.6375}{3.0 + 0.85} = 0.851
]
F2 分数为 0.851,表示我们在这个场景下更加注重查全率。


2.5 P-R 曲线(Precision-Recall Curve)

2.5.1 定义

P-R 曲线 展示了查准率(Precision)和查全率(Recall)在不同决策阈值下的变化。它用于评估分类模型在不平衡数据集上的表现,特别是在正类样本较少的情况下。

2.5.2 具体解读
  • 横轴:查全率(Recall),表示实际正类样本中,模型识别出来的比例。
  • 纵轴:查准率(Precision),表示预测为正类的样本中,真正为正类的比例。
  • 平衡点:P-R 曲线中的平衡点通常是查准率和查全率之间的最佳权衡点,可以通过F1分数Fβ分数来评估该点。
2.5.3 实例

假设我们在一个二分类问题中调整模型的决策阈值,从而产生不同的查准率和查全率。通过不断调整阈值,我们可以绘制出模型的 P-R 曲线。模型越好,P-R 曲线越靠近右上角,说明查准率和查全率同时较高。

2.5.4 适用场景

P-R 曲线在不平衡数据集上尤其有用,例如在垃圾邮件检测、欺诈检测等场景中,正类(如垃圾邮件或欺诈)通常非常少,P-R 曲线能够更好地反映模型在正类样本上的表现。


2.6 ROC 曲线(Receiver Operating Characteristic Curve)

2.6.1 定义

ROC 曲线 展示了不同阈值下模型的**真阳性率(TPR)假阳性率(FPR)**之间的关系。它广泛用于评估分类模型在平衡数据集上的表现。

2.6.2 具体解读
  • 横轴:假阳性率(FPR),即负类样本中被误分类为正类的比例。
  • 纵轴:真阳性率(TPR),即正类样本中被正确分类为正类的比例。
  • AUC(曲线下面积):AUC 表示 ROC 曲线下面的面积,AUC 越大,说明模型性能越好,AUC = 1 表示完美模型,AUC = 0.5 表示模型的表现与随机猜测相同。
2.6.3 实例

假设我们训练了一个癌症诊断模型。我们通过调整阈值,得到不同的真阳性率和假阳性率,并绘制 ROC 曲线:

  • 阈值高:模型非常谨慎,只预测高概率样本为正类,假阳性率低,但真阳性率也可能较低。
  • 阈值低:模型较宽松,真阳性率较高,但假阳性率也会上升。

AUC 值可以帮助我们量化模型的性能。例如,AUC = 0.85 表示模型有 85% 的概率可以正确区分正类和负类样本。

2.6.4 适用场景

ROC 曲线适用于平衡数据集,当正类和负类样本数量相当时,ROC 曲线能全面展示模型在不同阈值下的表现。如果数据严重不平衡,P-R 曲线可能更适合。


三、代价敏感分类

3.1 代价敏感错误率(Cost-Sensitive Error Rate)

3.1.1 定义

代价敏感错误率 是一种加权的错误率,它不仅考虑模型的错误率,还根据不同错误类型(如假阳性和假阴性)的代价对错误率进行加权。它常用于那些错误代价不对称的场景。

3.1.2 公式

[
\text{Cost-Sensitive Error Rate} = P(\text{FP}) \times C(\text{FP}) + P(\text{FN}) \times C(\text{FN})
]

  • ( P(\text{FP}) ):假阳性发生的概率。
  • ( P(\text{FN}) ):假阴性发生的概率。
  • ( C(\text{FP}) ):假阳性代价。
  • ( C(\text{FN}) ):假阴性代价。
3.1.3 实例

在癌症诊断中,假设假阳性代价为 500 元,假阴性代价为 10000 元。模型有 10% 的假阳性率和 5% 的假阴性率。代价敏感错误率为:
[
\text{Cost-Sensitive Error Rate} = (0.10 \times 500) + (0.05 \times 10000) = 50 + 500 = 550
]
550 表示在考虑错误代价后,模型的加权错误率。


3.2 期望总体代价(Expected Total Cost, ETC)

3.2.1 定义

期望总体代价 是用于衡量模型在实际场景中的预期总成本。它结合了错误发生的概率、错误代价以及样本数量,用于评估模型在实际应用中的经济成本。

3.2.2 公式

[
ETC = P(\text{FP}) \times C(\text{FP}) \times N_{\text{neg}} + P(\text{FN}) \times C(\text{FN}) \times N_{\text{pos}}
]

  • ( N_{\text{neg}} ):负类样本数。
  • ( N_{\text{pos}} ):正类样本数。
3.2.3 实例

在癌症诊断中,假设我们有 900 名健康人和 100 名患者。假阳性代价为 500 元,假阴性代价为 10000 元。模型的假阳性率为 10%,假阴性率为 5%。期望总体代价为:
[
ETC = (0.10 \times 500 \times 900) + (0.05 \times 10000 \times 100) = 45000 + 50000 = 95000
]
95000 元是模型在这 1000 个测试样本上的预期总成本。


3.3 代价曲线(Cost Curve)

3.3.1 定义

代价曲线(Cost Curve) 展示了模型在不同假阳性和假阴性代价权重条件下的表现。通过调整假阳性与假阴性代价的比值,可以观察模型的错误率如何随代价权重变化。代价曲线常用于那些不同错误代价具有不对称性的应用场景。

3.3.2 具体解读
  • 横轴:表示不同的代价权重,即假阳性和假阴性代价的比值。
  • 纵轴:表示代价敏感错误率或模型的代价表现。随着代价权重的变化,模型的总代价表现会随之变化。
3.3.3 实例

假设在医疗场景中,假阳性代价较低(500元),假阴性代价较高(10000元)。我们可以通过调整代价权重来观察模型的表现:

  • 当代价曲线呈现出急剧上升时,说明假阴性的代价占据了主导地位,模型需要更加注重降低假阴性。
  • 如果代价曲线呈现平缓上升,说明模型在当前代价比下表现较为平衡。

通过观察代价曲线,决策者可以找到一个合适的代价权衡点,以减少总损失。

3.3.4 适用场景

代价曲线适用于错误代价不对称的场景,如医疗诊断、欺诈检测等,在这些领域中,错误类型的代价(误诊和漏诊、误报和漏报)往往差异很大。


四、代价敏感错误率与期望总体代价的区别

4.1 代价敏感错误率

  • 应用场景:用于评估模型的加权错误率,主要用来比较不同模型在不同错误代价条件下的表现。它关注的是模型的错误率,并根据不同错误类型的代价进行加权。
  • 公式
    [
    \text{Cost-Sensitive Error Rate} = P(\text{FP}) \times C(\text{FP}) + P(\text{FN}) \times C(\text{FN})
    ]
    它的重点是衡量模型的表现,而不直接计算总经济成本。

4.2 期望总体代价

  • 应用场景:用于评估模型在实际应用中的总成本,尤其当需要衡量模型的错误会带来多大的实际经济损失时。期望总体代价考虑了样本数量,直接计算出模型在整个数据集上的预期总损失。
  • 公式
    [
    ETC = P(\text{FP}) \times C(\text{FP}) \times N_{\text{neg}} + P(\text{FN}) \times C(\text{FN}) \times N_{\text{pos}}
    ]
    期望总体代价强调的是模型在实际使用时会带来的成本,适合实际应用中做决策。

4.3 关键区别总结

  • 代价敏感错误率:是评估指标,关注的是模型的加权错误率,用来比较多个模型的性能表现。
  • 期望总体代价:是成本评估,计算模型在实际应用中可能带来的总经济损失,特别适合决策中的成本分析。

五、知识体系总结

5.1 模型评估方法

  • K折交叉验证法:通过将数据集划分为K个子集,循环训练和测试,减少模型评估的偏差。
  • 留1法:每次只留一个样本作为测试集,计算代价高但使用最大训练数据。
  • 自助法:通过有放回抽样生成训练集,适合小样本数据集,增加数据多样性。

5.2 分类模型评估指标

  • 混淆矩阵:衡量分类模型的性能,计算真正例、假正例、真负例、假负例。
  • 查准率与查全率:分别衡量模型在正类预测中的准确性和召回率。
  • F1分数与Fβ分数:查准率与查全率的调和平均数,用于平衡二者,Fβ分数 可以调节查全率和查准率的相对重要性。
  • P-R 曲线:展示查准率和查全率在不同阈值下的变化,适合不平衡数据集。
  • ROC 曲线:展示真阳性率与假阳性率的关系,适合平衡数据集,AUC 用于量化模型表现。

5.3 代价敏感分类

  • 代价敏感错误率:通过加权的错误率衡量模型在不同代价条件下的表现,用于模型的性能比较。
  • 期望总体代价:计算模型在实际应用中的预期经济损失,用于决策时的成本分析。
  • 代价曲线:展示模型在不同代价权重下的表现,帮助优化模型在不同代价比值条件下的权衡。

六、附录

6.1. AUC与排序质量

6.1.1 AUC 的定义和解读

AUC 是 ROC 曲线下面的面积,用来衡量分类器区分正类和负类样本的能力。AUC 值的范围是 0 到 1,AUC 值越接近 1,表示分类器的性能越好,能够更好地区分正类和负类样本。AUC = 0.5 时,表示模型的表现和随机猜测差不多;AUC < 0.5 则表示模型性能较差,甚至有可能反向预测。

6.1.2 AUC 衡量排序质量的含义

AUC 之所以与样本预测的排序质量相关,是因为它实际上衡量了正类样本的预测概率是否普遍高于负类样本。具体来说,AUC 反映了当你随机选择一个正类样本和一个负类样本时,模型将正类样本的预测得分排在负类样本前面的概率。

6.1.3 排序的含义

在分类任务中,模型对每个样本都会给出一个概率分数,这个分数可以理解为模型认为样本属于正类的置信度。如果模型正确预测,它应该对正类样本给出较高的分数,对负类样本给出较低的分数。因此,排序质量 就是指模型是否能够正确地将正类样本排在负类样本之前。

  • 高排序质量:正类样本的预测分数普遍高于负类样本,AUC 越接近 1。
  • 低排序质量:正类样本的预测分数与负类样本接近,甚至负类样本的分数高于正类样本,AUC 越低。
6.1.4 计算排序质量的具体方式

当计算 AUC 时,可以通过以下方式来理解模型的排序质量:

  • 对于任意一个正类样本和负类样本组合,计算模型是否正确地给正类样本的预测分数比负类样本高。如果大多数情况下,正类样本的分数比负类样本高,则 AUC 会较高。
  • AUC 实际上可以看作是模型为正类样本排在负类样本之前的比例。如果这个比例接近 1,则说明模型的排序能力很好;如果这个比例接近 0.5,则说明模型的排序能力接近随机。
6.1.5 实例

假设我们有以下 6 个样本(3 个正类,3 个负类),模型给出了每个样本的预测概率:

  • 正类样本:0.9、0.8、0.6
  • 负类样本:0.3、0.2、0.1

我们可以计算所有正类样本与负类样本组合的排序情况:

  • 0.9 > 0.3、0.9 > 0.2、0.9 > 0.1
  • 0.8 > 0.3、0.8 > 0.2、0.8 > 0.1
  • 0.6 > 0.3、0.6 > 0.2、0.6 > 0.1

在所有可能的正负样本对中,模型都将正类样本的预测分数排在负类样本之前。因此,模型的排序质量非常高,AUC 接近 1。

如果我们反过来,假设模型给出的分数是:

  • 正类样本:0.4、0.3、0.2
  • 负类样本:0.8、0.7、0.6

在这种情况下,所有正类样本的分数都低于负类样本,因此模型的排序质量非常差,AUC 会非常低,接近 0。

6.1.6 区别和联系
  • 排序质量 主要关注模型对正类和负类样本的相对置信度排序,评估的是模型能否把正类样本的预测值普遍排在负类样本之前。
  • AUC 是用来量化这种排序质量的指标。它通过计算正类样本在负类样本前面的概率来衡量模型的整体表现,体现了模型对样本排序的合理性。

相关文章:

机器学习2

一、模型评估方法 1.1 K折交叉验证法&#xff08;K-Fold Cross Validation&#xff09; 1.1.1 定义 K折交叉验证法是一种用于评估模型性能的技术。它将数据集分为K个相等的子集&#xff0c;模型会轮流使用一个子集作为测试集&#xff0c;其余K-1个子集作为训练集。这个过程会…...

二分查找_ x 的平方根搜索插入位置山脉数组的峰顶索引

x 的平方根 在0~X中肯定有数的平方大于X&#xff0c;这是肯定的。我们需要从中找出一个数的平方最接近X且不大于X。0~X递增&#xff0c;它们的平方也是递增的&#xff0c;这样我们就可以用二分查找。 我们找出的数的平方是<或者恰好X&#xff0c;所以把0~X的平方分为<X …...

汽车建模用什么软件最好?汽车建模渲染建议!

在汽车建模和渲染领域&#xff0c;选择合适的软件对于实现精确的设计与高质量的视觉效果至关重要。那么不少的汽车设计师如何选择合适的建模软件与渲染方案呢&#xff0c;一起来简单看看吧&#xff01; 一、汽车建模用软件推荐 1、Alias Autodesk旗下的Alias系列软件是汽车设…...

蘑菇分类识别数据集(猫脸码客 第222期)

蘑菇分类识别文本/图像数据集 蘑菇&#xff0c;作为一种广泛分布于全球的真菌&#xff0c;隶属于伞菌目伞菌亚门蘑菇科蘑菇属&#xff0c;拥有众多别名&#xff0c;如白蘑菇、洋蘑菇等。其不仅是世界上人工栽培最广泛、产量最高、消费量最大的食用菌品种之一&#xff0c;还在许…...

长短期记忆网络(Long Short-Term Memory,LSTM)

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 长短期记忆网络&#xff08;Long Short-Term Memory&#xff0c;简称LSTM&#xff09;是一种特殊的循环神经网络&#xff08;Recurrent Neural Network&#xff0c;简称RNN&#xff09;架构&#…...

WHAT - 引入第三方组件或项目使用需要注意什么

目录 1. 功能匹配2. 社区与维护3. 兼容性4. 性能5. 易用性6. 安全性7. 授权和许可证8. 国际化支持9. 依赖性10. 未来维护 在前端开发过程中引入第三方组件或项目时&#xff0c;应该从以下几个方面进行考虑&#xff0c;以确保引入的组件能够有效解决问题并适合长期维护&#xff…...

原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布

华为于10月22日19:00举办“原生鸿蒙之夜暨华为全场景新品发布会”。此次发布会推出全新的原生鸿蒙操作系统HarmonyOS NEXT&#xff08;HarmonyOS 5&#xff09;以及nova 13、WATCH Ultimate、MatePad Pro等新品。 据介绍&#xff0c;此前已经发布过的鸿蒙系统&#xff0c;由于系…...

WindTerm配置快捷键Ctrl+C和Ctrl+V

WindTerm配置快捷键CtrlC和CtrlV 平时使用ssh和sftp连接的时候&#xff0c;经常使用windterm&#xff0c; 但是windterm里面找不到相关的快捷键设置&#xff0c; 因为操作习惯&#xff0c;想把CtrlC和CtrlV分别配置为复制和粘贴&#xff0c;其他的快捷键操作可以按照该方法进…...

AOP学习

corol调用serverce不在是直接调用的是调用底层代理对象&#xff0c;由代理对象统一帮我们处理 AOP常见概念 通知类型 切面顺序...

【ubuntu18.04】ubuntu18.04升级cmake-3.29.8及还原系统自带cmake操作说明

参考链接 cmake升级、更新&#xff08;ubuntu18.04&#xff09;-CSDN博客 升级cmake操作说明 下载链接 Download CMake 下载版本 下载软件包 cmake-3.30.3-linux-x86_64.tar.gz 拷贝软件包到虚拟机 cp /var/run/vmblock-fuse/blockdir/jrY8KS/cmake-3.29.8-linux-x86_64…...

利用Docker搭建一套Mycat2+MySQL8一主一从、读写分离的最简单集群(保姆教程)

文章目录 1、Mycat介绍1.1、mycat简介1.2、mycat重要概念1.3、Mycat1.x与Mycat2功能对比1.2、主从复制原理 2、前提准备3、集群规划4、安装和配置mysql主从复制4.1、master节点安装mysql8容器4.2、slave节点安装mysql8容器4.2、配置主从复制4.3、测试主从复制配置 5、安装mycat…...

算法——python实现堆排序

文章目录 堆排序二叉树堆堆排序的过程&#xff1a;代码实现python中的heapq模块 堆排序 二叉树 关于二叉树的操作&#xff0c;其实核心就是 父节点找子节点&#xff0c;子节点找父节点 如果要将二叉树存储到队列中&#xff0c;就需要找出 父子节点之间的规律&#xff1a; 父…...

uniapp-components(封装组件)

<myitem></myitem> 在其他类里面这样调用。...

avue-crud组件,输入框回车搜索问题

crud组件&#xff0c;输入框回车搜索问题。 文档是并没有标注&#xff0c;实际上已经具备此功能。 需要在curd的option增加属性 searchEnter: true 即可实现输入内容后回车搜索。 avue的一些踩坑记录 - 前端小小菜 - 博客园...

STM32F407ZGT6定时器相关测试

结论&#xff1a; 20us以下的IO翻转操作&#xff0c;存在误差输出比较定时器使能与禁用功能正常输入捕获定时器使能与禁用功能正常单通道输出比较、输入捕获均正常多通道输出比较波形无干扰&#xff0c;但仍是存在20us以下的IO翻转操作存在误差多通道输入捕获正常 一、单一通…...

群晖通过 Docker 安装 GitLab

Docker 配置容器步骤都是大同小异的&#xff0c;可以参考&#xff1a; 群晖通过 Docker 安装 Gitea-CSDN博客 1. 在 Docker 文件夹中创建 GitLab&#xff0c;并创建子文件夹 2. 设置权限 3. 打开 Docker 应用&#xff0c;并在注册表搜索 gitlab-ce 4. 选择 gitlab-ce 映像运行…...

1.Node.js环境搭建(windows)

一、环境搭建(windows) 1.1下载并安装 https://nodejs.org/dist/v18.20.4/node-v18.20.4-x64.msi1.2测试和查看版本 #cmd命令 node -v输出&#xff1a; #能正确输出版本号&#xff0c;说明安装成功 v18.20.41.3使用nodejs启动第一个js #hello.js console.log(hello world!…...

链上相遇,节点之间的悸动与牵连

公主请阅 1. 返回倒数第 k 个节点1.1 题目说明1.2 题目分析1.3 解法一代码以及解释1.3 解法二代码以及解释 2.相交链表2.1 题目说明示例 1示例 2示例 3 2.2 题目分析2.3 代码部分2.4 代码分析 1. 返回倒数第 k 个节点 题目传送门 1.1 题目说明 题目名称&#xff1a; 面试题 02…...

一些简单的编程题(Java与C语言)

引言&#xff1a; 这篇文章呢&#xff0c;小编将会举一些简单的编程题用来帮助大家理解一下Java代码&#xff0c;并且与C语言做个对比&#xff0c;不过这篇文章所出现的题目小编不会向随缘解题系列里面那样详细的讲解每一到题&#xff0c;本篇文章的主要目的是帮助小编和读者们…...

java计算机毕设课设—愤怒小鸟游戏(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; 资源获取方式再最下方 java计算机毕设课设—愤怒小鸟游戏(附源码、文章、相关截图、部署视频) 基于Java的愤怒小鸟游戏&#xff0c;我们不仅复刻了原版游戏的核心玩法&#xff0c;还增加了一些创新元素。游戏以2D图形界面呈现&#xff0c;玩家需要…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...