集成学习概述

概述

集成学习(Ensemble learning)就是将多个机器学习模型组合起来,共同工作以达到优化算法的目的。具体来讲,集成学习可以通过多个学习器相结合,来获得比单一学习器更优越的泛化性能。集成学习的一般步骤为:1.生产一组“个体学习器(individual learner)”;2.用某种策略将他们结合起来。

个体学习器通常由一个现有的学习算法从训练数据产生。在同质集成(系统中个体学习器的类型相同)中,个体学习器又被称为“基学习器”,而在异质集成(系统中个体学习器的类型不同)中,个体学习器又被称为“组建学习(component learner)”。

集成学习的集成框架主要有:Bagging,Boosting和Stacking,其中Bagging和Boosting为同质集成,而Stacking为异质集成。
Bagging可以减少弱分类器的方差,而Boosting 可以减少弱分类器的偏差;

Bagging就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的variance. Bagging 比如Random Forest 这种先天并行的算法都有这个效果。
Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。这种算法无法并行,如Adaptive Boosting.

多样性增强的几种方法

一般的做法主要是对数据样本,输入属性,输出表示,算法参数进行扰动。

  • (1)数据样本扰动
    这个其实主要就是采样,比如在bagging中的自助采样法,数据样本扰动对决策树,神经网络这样对数据样本变化非常敏感的学习算法非常有效,但是对支持向量机,朴素贝叶斯,k近邻这些对样本扰动不敏感的算法没用。对此类算法作为基学习器进行集成时往往需要使用输入属性扰动等机制。
  • (2)输入属性扰动
    这个就是从样本的特征空间中产生不同的特征子集。这样训练出来的基学习器必然是不同的。在包含大量冗余属性的数据,在特征子集中训练基学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅节省时间开销,同时,由于冗余属性多,减少一些冗余属性后训练出来的基学习器性能也不会差。若数据只包含少量属性,或者冗余属性少,则不适宜使用输入属性扰动法。
  • (3)输出表示扰动
    这类做法的基本思路是对输出表示进行操纵以增强多样性。比如可对训练样本的label稍作变动,比如“翻转法”随机改变一些训练样本的标记;也可以对输出表示进行转化,如“输出调制法”将分类输出转化为回归输出后构建基学习器。这一类貌似用的不多。
  • (4)算法参数扰动
    这个在现在深度学习比赛中很常见,主要是神经网络有很多参数可以设置,不同的参数往往可以产生差别比较大的基学习器。

Bagging

核心思想:并行地训练一系列各自独立的同类模型,然后再将各个模型的输出结果按照某种策略进行聚合。例如,分类中可以采用投票策略,回归中可以采用平均策略;Bagging主要分为两个阶段:
步骤:

  • Boostrap阶段,即采用有放回的采样方式,将训练集分为n个子样本集;并用基学习器对每组样本分布进行训练,得到n个基模型;
  • Aggregating阶段,将上一个阶段训练得到的n个基模型组合起来,共同做决策。在分类任务中,可采用投票法,比如相对多数投票法,将结果预测为得票最多的类别。而在回归任务中可采用平均法,即将每个基模型预测得到的结果进行简单平均或加权平均来获得最终的预测结果。

Bagging就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的variance.;Bagging 比如Random Forest 这种先天并行的算法都有这个效果

随机森林(Random Forest)

1. 算法原理

随机森林(Random Forest)是一种基于决策树的集成学习方法。它通过构建多个决策树,并将它们的预测结果进行投票(分类问题)或平均(回归问题),以获得最终的预测结果。随机森林的构建过程包括两个关键步骤:自助采样(bootstrap sampling)和特征随机选择。自助采样用于生成不同的训练数据子集,每个子集用于构建一个决策树。特征随机选择则在每个决策树节点上随机选择一部分特征进行划分,以增加决策树的多样性。这两个步骤共同提高了随机森林的泛化能力和鲁棒性。

2.优缺点

优点:
a) 随机森林具有较高的预测准确性,通常比单个决策树的性能要好。
b) 能够有效地处理高维数据和大量特征。
c) 对噪声和异常值具有较强的鲁棒性。
d) 可以进行特征重要性评估,有助于特征选择。
e) 并行化能力强,易于实现并行计算。
缺点:
a) 相比单个决策树,随机森林的模型可解释性较差。
b) 训练和预测时间可能较长,尤其是在大数据集上。
c) 对于某些不平衡的数据集,随机森林的性能可能不尽如人意。

3.适用场景

随机森林适用于以下场景:
a) 需要提高预测准确性的分类和回归问题。
b) 数据集具有高维特征或特征数量较多。
c) 数据集中存在噪声和异常值。
随机森林在许多实际应用中表现出较好的性能,尤其是在提高预测准确性方面。然而,随机森林的可解释性较差,且在大数据集上训练和预测时间可能较长。在面临这些问题时,可以考虑使用其他集成方法,如梯度提升树(Gradient Boosting Trees)等。

RandomForestClassifier:分类树
RandomForestRegressor(n_estimators=100, criterion='mse', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None)

重要的参数:

  • n_estimators:随机森林中决策树的个数,默认为 100。
  • criterion:随机森林中决策树的算法,可选的有两种:1)gini:基尼系数,也就是 CART 算法,为默认值;2)entropy:信息熵,也就是 ID3 算法。
  • max_depth:决策树的最大深度。
RandomForestRegressor:回归树
RandomForestRegressor(n_estimators=100, criterion='mse', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None)

回归树中的参数与分类树中的参数基本相同,但 criterion 参数的取值不同。
在回归树中,criterion 参数有下面两种取值:

  • mse:表示均方误差算法,为默认值。
  • mae:表示平均误差算法。

Boosting

Boosting由于各基学习器之间存在强依赖关系,因此只能串行处理,也就是Boosting实际上是个迭代学习的过程。
Boosting的工作机制为:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整(比如增大被误分样本的权重,减小被正确分类样本的权重),使得先前基学习器做错的样本在后续的训练过程中受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复,直到基学习器数目达到事先自定的值T,然后将这T 个基学习器进行加权结合(比如错误率小的基学习器权重大,错误率大的基学习器权重小,这样做决策时,错误率小的基本学习器影响更大)
Boosting算法主要有AdaBoost(Adaptive Boost)自适应提升算法和Gradient Boosting梯度提升算法。最主要的区别在于两者如何识别和解决模型的问题。AdaBoost用错分的数据样本来识别问题,通过调整错分数据样本的权重来改进模型。Gradient Boosting主要通过负梯度来识别问题,通过计算负梯度来改进模型。
在这里插入图片描述
在这里插入图片描述

AdaBoost

核心思想:串行地训练一系列前后依赖的同类模型,即后一个模型用来对前一个模型的输出结果进行纠正。Boosting算法是可以将弱学习器提升为强学习器的学习算法。

步骤:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行。直至基学习器数目达到实现指定的值n,最终将这n个基学习器进行结合。

Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。这种算法无法并行,如Adaptive Boosting;

1. 算法原理

AdaBoost(Adaptive Boosting)是一种集成学习方法,通过多次迭代训练一系列弱学习器并加权组合,以提高分类性能。在每次迭代过程中,对错误分类的样本增加权重,使得后续的弱学习器更关注这些样本。最后,将所有弱学习器的预测结果进行加权投票,得到最终分类结果。

2.优缺点

a) 优点:
i. 可以提高模型的准确性和泛化能力。
ii. 算法简单易于实现。 iii. 不容易过拟合。
b) 缺点:
i. 对异常值和噪声敏感,可能导致性能下降。
ii. 训练过程需要依次进行,较难并行化。

3.适用场景

AdaBoost适用于以下场景:
a) 当基学习器性能较弱时,可以通过集成提高性能。
b) 适用于二分类问题,尤其是需要提高分类性能的场景。
AdaBoost在人脸检测、文本分类、客户流失预测等领域有广泛应用。

GBDT

核心思想

梯度提升决策树(Gradient Boosting Decision Tree,GBDT) 是将多个弱学习器(通常是决策树)组合成一个强大的预测模型。具体而言,GBDT的定义如下:
初始化:首先,GBDT使用一个常数(通常是目标变量的平均值)作为初始预测值。这个初始预测值代表了我们对目标变量的初始猜测。
迭代训练:GBDT是一个迭代算法,通过多轮迭代来逐步改进模型。在每一轮迭代中,GBDT都会训练一棵新的决策树,目标是减少前一轮模型的残差(或误差)。残差是实际观测值与当前模型预测值之间的差异,新的树将学习如何纠正这些残差。
集成:最终,GBDT将所有决策树的预测结果相加,得到最终的集成预测结果。这个过程使得模型能够捕捉数据中的复杂关系,从而提高了预测精度。
GBDT的核心原理在于不断迭代,每一轮迭代都尝试修正前一轮模型的错误,逐渐提高模型的预测性能。

优缺点

优点:

  1. 可以灵活处理各种类型的数据,包括连续值和离散值。
  2. 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。
    3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
  3. 很好的利用了弱分类器进行级联。
  4. 充分考虑的每个分类器的权重。
    6)不需要归一化。树模型都不需要,梯度下降算法才需要
    6)处理非线性关系

缺点:
1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
2)不适合高维稀疏特征

适用场景

GBDT 可以适用于回归问题(线性和非线性);
GBDT 也可用于二分类问题(设定阈值,大于为正,否则为负)和多分类问题。

XGBoost

1. 算法原理

XGBoost(eXtreme Gradient Boosting)是基于梯度提升(Gradient Boosting)的决策树集成学习方法。XGBoost通过加入正则化项,降低模型复杂度,提高泛化能力。同时,XGBoost采用了并行计算和近似算法,显著提高了训练速度。
XGBoost是基于GBDT 的一种改进算法;
列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。
Shrinkage(缩减),相当于学习速率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置得小一点,然后迭代次数设置得大一点。(传统GBDT的实现也有学习速率)
对缺失值的处理。对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向。

2.优缺点

优点:
i. 高效的训练速度,支持并行计算。
ii. 高准确率,通过正则化降低过拟合风险。
iii. 支持自定义损失函数和评估指标。
iv. 内置特征重要性排序功能。
缺点:
i. 超参数调优较为复杂。
ii. 需要较多的计算资源。

3.适用场景

XGBoost在以下场景表现优异:
a) 大规模数据集。
b) 需要高准确率的分类和回归任务。
c) 特征选择。
XGBoost在Kaggle竞赛中广泛应用,获得了多次胜利。

LightGBM

LightGBM是一种基于梯度提升树的机器学习算法,它通过使用基于直方图的算法和带有按叶子节点分割的决策树来提高训练和预测的效率。

算法原理

基于直方图的算法:LightGBM使用了一种基于直方图的算法来处理数据。它将数据按特征值进行离散化,构建直方图并对其进行优化,从而减少了内存消耗和计算时间。
基于按叶子节点分割的决策树:传统的梯度提升树算法在每个节点上都尝试所有特征的切分点,而LightGBM在构建决策树时采用了按叶子节点分割的策略。这样可以减少计算量,并且更容易处理高维稀疏特征。
LightGBM也是基于GBDT的改进算法;

优缺点

优点:
高效性:LightGBM具有高效的训练和预测速度,尤其在处理大规模数据集时表现出色。
低内存消耗:由于使用了基于直方图的算法和按叶子节点分割的决策树,LightGBM能够减少内存消耗,适用于内存有限的环境。
高准确性:LightGBM通过优化算法和特征选择等方法提高了模型的准确性。
缺点:
对噪声敏感:LightGBM在处理噪声较大的数据时可能会过拟合,需要进行适当的正则化。
参数调优:LightGBM有一些需要调优的参数,不同的参数组合可能会导致不同的效果,需要进行合适的参数调优。

注意事项:
数据预处理:对数据进行清洗、缺失值处理和特征工程等预处理步骤,以提高模型的泛化能力。
参数调优:通过交叉验证等方法选择合适的参数组合,以获得更好的模型性能。
提前停止:在训练过程中使用早期停止法,避免模型过拟合。
特征重要性评估:通过分析模型输出的特征重要性,可以帮助理解数据和模型之间的关系,指导特征选择和特征工程。

总体而言,LightGBM是一种高效、低内存消耗且具有准确性的机器学习算法,在处理大规模数据集和高维稀疏特征方面具有优势。但需要注意参数调优和模型过拟合问题。

参数设置

AdaBoost

class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm='SAMME.R', random_state=None)
  • base_estimator:基分类器,默认是决策树,在该分类器基础上进行boosting,理论上可以是任意一个分类器,但是如果是其他分类器时需要指明样本权重。
  • n_estimators:基分类器提升(循环)次数,默认是50次,这个值过大,模型容易过拟合;值过小,模型容易欠拟合。
  • learning_rate:学习率,表示梯度收敛速度,默认为1,如果过大,容易错过最优值,如果过小,则收敛速度会很慢;该值需要和n_estimators进行一个权衡,当分类器迭代次数较少时,学习率可以小一些,当迭代次数较多时,学习率可以适当放大。
  • algorithm:boosting算法,也就是模型提升准则,有两种方式SAMME, 和SAMME.R两种,默认是SAMME.R,两者的区别主要是弱学习器权重的度量,前者是对样本集预测错误的概率进行划分的,后者是对样本集的预测错误的比例,即错分率进行划分的,默认是用的SAMME.R。
  • random_state:随机种子设置。

GBDT

class sklearn.ensemble.GradientBoostingClassifier(*, loss='deviance', learning_rate=0.1, n_estimators=100, subsample=1.0, 
criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, 
min_impurity_decrease=0.0, min_impurity_split=None, init=None, random_state=None, max_features=None, 
verbose=0, max_leaf_nodes=None, warm_start=False, presort='deprecated', validation_fraction=0.1, 
n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)

GBDT(Gradient Boosting Decision Tree)是一种基于梯度提升的集成学习算法,它使用决策树作为弱学习器,通过迭代地拟合残差来提高预测性能。GBDT 的主要参数有:

  • n_estimators:也就是弱学习器的最大迭代次数,或者说最大的弱学习器的个数。一般来说n_estimators太小,容易欠拟合,n_estimators太大,又容易过拟合,一般选择一个适中的数值。默认是100。在实际调参的过程中,我们常常将n_estimators和下面介绍的参数learning_rate一起考虑;
  • learning_rate:float,认= 0.1,学习率缩小了每棵树的贡献learning_rate。在learning_rate和n_estimators之间需要权衡;推荐的候选值为:[0.01, 0.015, 0.025, 0.05, 0.1]
  • subsample:子采样,取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在 [0.5, 0.8] 之间,默认是1.0,即不使用子采样;
    loss:即我们GBDT算法中的损失函数。分类模型和回归模型的损失函数是不一样的。1)对于分类模型,有对数似然损失函数"deviance"和指数损失函数"exponential"两者输入选择。默认是对数似然损失函数"deviance"。2)对于回归模型,有均方差"ls", 绝对损失"lad", Huber损失"huber"和分位数损失“quantile”。默认是均方差"ls"。一般来说,如果数据的噪音点不多,用默认的均方差"ls"比较好。如果是噪音点较多,则推荐用抗噪音的损失函数"huber"。而如果我们需要对训练集进行分段预测的时候,则采用“quantile”。
  • init:计量或“零”,默认=无,一个估计器对象,用于计算初始预测。 init必须提供fit和predict_proba。如果为“零”,则初始原始预测设置为零。默认情况下,使用 DummyEstimator预测类优先级;
  • max_depth:int,默认= 3,各个回归估计量的最大深度。最大深度限制了树中节点的数量。调整此参数以获得最佳性能;最佳值取决于输入变量的相互作用。也就是那个树有多少层(一般越多越容易过拟合);
  • min_samples_split:int或float,默认为2,拆分内部节点所需的最少样本数:如果为int,则认为min_samples_split是最小值。如果为float,min_samples_split则为分数, 是每个拆分的最小样本数。ceil(min_samples_split * n_samples)
  • min_samples_leaf: int或float,默认值= 1,在叶节点处所需的最小样本数。仅在任何深度的分裂点在min_samples_leaf左分支和右分支中的每个分支上至少留下训练样本时,才考虑。这可能具有平滑模型的效果,尤其是在回归中。如果为int,则认为min_samples_leaf是最小值。如果为float,min_samples_leaf则为分数, 是每个节点的最小样本数。ceil(min_samples_leaf * n_samples)
  • min_weight_fraction_leaf:float,默认值= 0.0,在所有叶节点处(所有输入样本)的权重总和中的最小加权分数。如果未提供sample_weight,则样本的权重相等。
  • min_impurity_decrease:浮动,默认值= 0.0,如果节点分裂会导致杂质的减少大于或等于该值,则该节点将被分裂;
  • min_impurity_split :float,默认=无提前停止树木生长的阈值。如果节点的杂质高于阈值,则该节点将分裂,否则为叶
  • subsample:用于训练每个弱学习器的样本比例。减小该参数可以降低方差,但也可能增加偏差。
  • max_features:节点分裂时参与判断的最大特征数,用于分裂每个决策树节点的特征数量。减小该参数可以降低过拟合的风险,但也可能降低模型的表达能力。int:个数;float:占所有特征的百分比;auto:所有特征数的开方;sqrt:所有特征数的开方;log2:所有特征数的log2值;None:等于所有特征数。

XGBoost

XGBoost(Extreme Gradient Boosting)是一种优化的 GBDT 实现,它使用了更高效的数据结构和并行计算,同时引入了正则化项和剪枝策略来防止过拟合。XGBoost 的主要参数有:

  • n_estimators:同 GBDT。
  • learning_rate:同 GBDT。
  • max_depth:同 GBDT。
  • min_child_weight:决策树叶节点的最小权重和,相当于 GBDT 中的 min_samples_leaf 乘以样本权重。增加该参数可以防止过拟合,但也可能导致欠拟合。
  • subsample:同 GBDT。
  • colsample_bytree:相当于 GBDT 中的 max_features,表示用于训练每棵树的特征比例。减小该参数可以降低过拟合的风险,但也可能降低模型的表达能力。
  • reg_alpha:L1 正则化项的系数,用于惩罚模型的复杂度。增加该参数可以使模型更稀疏,但也可能损失一些信息。推荐的候选值为:[0, 0.01~0.1, 1]
  • reg_lambda:L2 正则化项的系数,用于惩罚模型的复杂度。增加该参数可以防止过拟合,但也可能降低模型的灵活性。推荐的候选值为:[0, 0.1, 0.5, 1]

LightGBM

LightGBM(Light Gradient Boosting Machine)是一种基于梯度提升的高效的分布式机器学习框架,它使用了基于直方图的算法和基于叶子的生长策略,可以大大提高训练速度和减少内存消耗。LightGBM 的主要参数有:

  • n_estimators:同 GBDT。
  • learning_rate:同 GBDT。
  • num_leaves:决策树的最大叶子数,相当于 GBDT 中的 max_depth 的指数倍。增加该参数可以增加模型的复杂度和拟合程度,但也可能导致过拟合。
  • min_child_samples:同 GBDT 中的 min_samples_leaf。
  • subsample:同 GBDT。
  • colsample_bytree:同 XGBoost。
  • reg_alpha:同 XGBoost。
  • reg_lambda:同 XGBoost。

Stacking

Stacking的核性思想是并行地训练一系列各自独立的不同类模型,然后通过训练一个元模型(meta-model)来将各个模型输出结果进行结合。Stacking也可以分为两个阶段:

分别采用全部的训练样本来训练n个组件模型,要求这些个体学习器必须异构的,比如可以分别是线性学习器,SVM,决策树模型和深度学习模型。
训练一个元模型(meta-model)来将各个组件模型的输出结果进行结合,具体过程就是将各个学习器在训练集上得到的预测结果作为训练特征和训练集的真实结果组成新的训练集;然后用这个新组成的训练集来训练一个元模型。这个元模型可以是线性模型或者树模型。

分类
原理
优劣势
python实现
调参
应用

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

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

相关文章

实战 | YOLOv10 自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)

导读 本文主要介绍如何使用YOLOv10在自定义数据集训练实现车牌检测 (数据集训练预测 保姆级教程)。 YOLOv10简介 YOLOv10是清华大学研究人员在Ultralytics Python包的基础上,引入了一种新的实时目标检测方法,解决了YOLO以前版本在后处理和模型架构方面…

自动化装箱封箱解决方案:深度探讨其优势及故障处理技巧

在当今这个快节奏、高效率的时代,自动化装箱封箱解决方案以其独特的优势,正逐渐成为物流、仓储等行业的新宠。它不仅能大幅提升作业效率,还能显著降低人工成本,减少人为错误。星派将深度探讨自动化装箱封箱技术的显著优势&#xf…

【Vue】练习-mutations的减法功能

文章目录 一、需求二、完整代码 一、需求 步骤 二、完整代码 Son1.vue <template><div class"box"><h2>Son1 子组件</h2>从vuex中获取的值: <label>{{ $store.state.count }}</label><br><button click"handleA…

C# 界面控件中英切换

编程软件:VS 2015 需求:界面有两个按钮&#xff0c;点击可以将界面上所有控件进行不同语言的切换。 一共两种方案&#xff0c;个人认为第二种方案使用范围更广&#xff08;这里以中英文切换为例&#xff09;。 方案一:如图所示&#xff0c;建立两个资源文件 将所需控件的中英…

海思SS928(SD3403)部署YOLOv5-YOLOv7步骤详解

1. YOLO模型资料 本文档内容以yolov5-7.0工程、yolov5s模型为例。 a. 模型结构 详细的模型结构可以利用netron工具打开.pt或.onnx模型查看。 b. 模型参数即验证结果 其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x为五种类型的预训练模型,其包含的检测类别相…

2024 cicsn ezbuf

文章目录 参考protobuf逆向学习复原结构思路exp 参考 https://www.y4ng.cn/posts/pwn/protobuf/#ciscn-2024-ezbuf protobuf 当时压根不知道用了protobuf这个玩意&#xff0c;提取工具也没提取出来&#xff0c;还是做题做太少了&#xff0c;很多关键性的结构都没看出来是pro…

Unity 集成 FMOD 音频管理插件 2.02

Unity 集成 FMOD 音频管理插件 2.02 3. 集成教程&#xff1a;3.1 设置Unity项目3.2 设置FMOD项目3.3 设置 FMOD for Unity3.4 添加声音&#xff1a;卡丁车引擎3.5 添加声音&#xff1a;氛围3.6 添加声音&#xff1a;音乐3.7 删除现有音频3.8 下一步 10. 脚本 API 参考10.1 基础…

Java锁的四种状态(无锁、偏向级锁、轻量级锁、重量级锁)

介绍 首先&#xff0c;我们需要明确一点&#xff1a;偏向级锁、轻量级锁、重量级锁只针对synchronized 锁的状态总共有四种&#xff0c;级别由低到高依次为&#xff1a;无锁、偏向锁、轻量级锁、重量级锁。 这四种锁状态分别代表什么&#xff0c;为什么会有锁升级&#xff…

在UI界面中实现3d人物展示

简要原理(设置双摄像机): 为需要展示的3D人物单独设置一个摄像机(只设置为渲染人物层级),主要摄像机的方向与人物方向一致,但摄像机需要需要旋转180,设置的角度自行进行微调创建一个Render Texture类型的组件用于存储摄像机渲染的内容UI上设置需要展示的图片区域,图片…

遍历目录

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 遍历在汉语中的意思是全部走遍&#xff0c;到处周游。在Python中&#xff0c;遍历是将指定的目录下的全部目录&#xff08;包括子目录&#xff09;及…

聪明人社交的基本顺序:千万别搞反了,越早明白越好

聪明人社交的基本顺序&#xff1a;千万别搞反了&#xff0c;越早明白越好 国学文化 德鲁克博雅管理 2024-03-27 17:00 作者&#xff1a;方小格 来源&#xff1a;国学文化&#xff08;gxwh001&#xff09; 导语 比一个好的圈子更重要的&#xff0c;是自己优质的能力。 唐诗宋…

AH股高开低走,创业板跌超2%,宁德时代下挫6%,微盘股指数反弹超5%

创业板跌2%&#xff0c;权重股宁德时代跌近6%&#xff1b;地产、光刻机概念股逆势大涨&#xff1b;券商股午后集体下跌&#xff0c;天风证券一度跌停。微盘股指数经历连跌后早盘反弹超5%。 内容提要 周五&#xff0c;A股高开后回落&#xff0c;午盘震荡回升。截至收盘&#x…

Python可视化 | 使用matplotlib绘制面积图示例

面积图是数据可视化中的一个有效工具&#xff0c;用于说明时间上的关系和趋势。它们提供了一种全面的、视觉上迷人的方法&#xff0c;通过熟练地将折线图的可读性与填充区域的吸引力相结合来呈现数值数据。 在本文中&#xff0c;我们将学习更多关于在Python中创建面积折线图的…

【python】python指南(二):命令行参数解析器ArgumentParser

一、引言 对于算法工程师来说&#xff0c;语言从来都不是关键&#xff0c;关键是快速学习以及解决问题的能力。大学的时候参加ACM/ICPC一直使用的是C语言&#xff0c;实习的时候做一个算法策略后台用的是php&#xff0c;毕业后做策略算法开发&#xff0c;因为要用spark&#x…

24考研408大变化,25考研高分上岸规划+应对策略

巧了&#xff0c;我有现成的经验&#xff1a; 数学和专业课的成绩都不高不低&#xff0c;刚好够用&#xff0c;其实408想上岸&#xff0c;不仅仅要学好408&#xff0c;还要学好考研数学&#xff0c;这是我的肺腑之言&#xff0c;我复试的时候&#xff0c;我知道的那些没有进复试…

高通SDX12:Voice Over USB 功能调试

一、功能概述及使用环境 Linux PC 作为上位机,内置 SLIC基于高通 SDX12 平台的设备作为从设备,通过USB连接到 Linux PC 上,在 PC 上枚举 UAC 设备从设备进行 MO/MT Call 时,上位机使用 arecord 进行录音,音频数据通过 USB 传至上位机,上位机停止录音后再使用 aplay 进行播…

vue element 接口返回数据与控制台打印数据不一致 踩坑

问题描述&#xff1a; 接口返回数据正常&#xff0c;&#xff0c;控制台打印不对&#xff0c;element el-switch表格中使用&#xff0c;控制台打印数据被改变 如下正常数据 数据id 17状态是0 控制台打印状态却是1 造成原因&#xff1a; element el-seitch组件修改了状态 修…

解决方案:昇腾aarch64服务器安装CUDA+GCC+CMake,编译安装Pytorch,华为昇腾HPC服务器深度学习环境安装全流程

目录 一、安装CUDA和cudnn1.1、下载CUDA驱动1.2、安装CUDA驱动1.3、配置环境变量1.4、安装cudnn1.5、安装magma-cuda 二、安装gcc编译器三、安装CMake四、安装NCCL五、编译安装Pytorch5.1、前提准备5.2、下载pytorch源码5.3、配置环境变量5.4、Pytorch编译安装5.5、测试Pytorch…

Python教程:Python操作MySQL基础使用

8、Python操作MySQL基础使用 8.1 安装pymysql pip install pymysql8.2 测试连接 测试代码 from pymysql import Connection# 获取到MySQL数据库的链接对象 conn Connection(# 主机名hostlocalhost,# 端口号,默认3306port3306,# 账户名userroot,# 密码password3535 )# 打印…

日志分析集群最新版

日志分析集群-8版本 作者&#xff1a;行癫&#xff08;盗版必究&#xff09; 第一部分&#xff1a;Elasticsearch 一&#xff1a;环境准备 1.简介 ​ 部署模式&#xff1a;es集群采用无主模式 ​ es版本&#xff1a;8.13.4 ​ jdk版本&#xff1a;使用es内嵌的jdk21&#x…