【MATLAB第37期】 #保姆级教程 XGBOOST模型参数完整且详细介绍,调参范围、思路及具体步骤介绍

2023-11-07

【MATLAB第37期】 #保姆级教程 XGBOOST模型参数完整且详细介绍,调参范围、思路及具体步骤介绍

一、XGBOOST参数介绍

(一)模型参数

1.XGBoost模型[default=gbtree]
有两种模型可以选择gbtree和gblinear。gbtree使用基于树的模型进行提升计算,gblinear使用线性模型进行提升计算。其中gbtree的效果要远好于gblinear。

2.objective目标函数 [ default=reg:linear ]
定义学习任务及相应的学习目标,可选的目标函数如下:
“reg:linear” –线性回归。
“reg:logistic” –逻辑回归。
“binary:logistic” –二分类的逻辑回归问题,输出为概率。
“binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。
“count:poisson” –计数问题的poisson回归,输出结果为poisson分布。在poisson回归中,max_delta_step的缺省值为0.7。
“multi:softmax” –让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)
“multi:softprob” –和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。没行数据表示样本所属于每个类别的概率。
“rank:pairwise” –通过最小化成对损失对任务进行排序

3.eval_metric——评价指标[default=取决于objective参数的取值]
对于回归问题,默认值是rmse,对于分类问题,默认值是error。选项如下所示:
rmse(均方根误差)
mae(平均绝对误差)
logloss(负对数似然函数值)
error(二分类误差,阈值0.5)
merror(多分类错误率)
mlogloss(多分类logloss损失函数)
auc(曲线下面积)
“ndcg”:归一化贴现累积收益
“map”:平均精度

(二)通用参数

1.max_depth ——数的最大深度[default=6],取值范围为:[1,∞]
通过控制树的深度从而控制树模型的复杂程度,来减少过拟合分风险。max_depth越大,模型会学到更具体更局部的样本

2.min_child_weight ——子节点最小样本权重和[default=1],取值范围为: [0,∞]
最小样本权重的和;这个参数用于避免过拟合,当它的值较大时,可以避免模型学习到局部的特殊样本。但是如果这个值过高,会导致欠拟合。

3.subsample ——每个决策树所用的子样本占总样本的比例[default=1],取值范围为:(0,1]
用于训练模型的子样本占整个样本集合的比例。如果设置为0.5则意味着XGBoost将随机的从整个样本集合中随机的抽取出50%的子样本建立树模型,这能够防止过拟合。参数默认值是1,该参数控制的就是对于每棵树,随机采样的比例。减少这个参数的值,同样会使算法更加保守,避免过拟合,但是如果设置的过于小,可能会导致欠拟合。典型的取值范围[0.5-1.0]。

4.colsample_bytree——在建立树时对特征采样的比例 [default=1],取值范围:(0,1]
用来控制每棵随机采样的列数的占比(每一列是一个特征)。控制每棵树的特征抽取比例,减少过拟合的风险。参数默认值是1,典型的取值范围[0.5-1.0]。

5.colsample_bylevel——对列数的采样的占比 [default=1]
参数默认值是1,用来控制树的每一级的每一次分裂,对列数的采样的占比。

6.silent ——运行信息[default=0]
取0时表示打印出运行时信息,取1时表示以缄默方式运行,不打印运行时信息。

7.nthread——输入系统的核数[default=当前系统可获得的最大线程数]
XGBoost运行时的线程数。看到这个参数的第一反应就猜到是和多线程相关的,果不其然,该参数是用来控制应当输入系统的核数。如果不输入这个参数的话,算法自动检测会默认使用CPU的全部核。

8.base_score ——所有实例的初始预测分数,全局偏差[ default=0.5 ]

9.max_delta_step——每个树的权重最大增量 [default=0],取值范围为:[0,∞]
该参数限制的是每棵树权重改变的最大步长。如果该参数设置为0,则表示没有约束,如果其被赋予了某个正值,则会让算法更加保守。原文说该参数一般用不到,但是在样本不平衡的情况下,对逻辑回归很有帮助(有待测试)。但当类极不平衡时,它可能有助于逻辑回归。将其设置为1-10可能有助于控制更新。

10.num_pbuffer——预测缓冲区的大小
[由xgboost自动设置,无需用户设置],通常设置为训练实例的数量。缓冲器用于保存上一个升压步骤的预测结果。

11.num_feature——特征维数
[由xgboost自动设置,无需用户设置]特征个数

12.lambda——L2 正则的惩罚系数 [default=1]
这个参数是用来控制XGBoost的正则化部分的。在减少过拟合上可挖掘更多用处。参数默认值是1,权重的L2正则化项(类似于Ridge Regression),该参数是用来控制XGBoost中的正则化部分的,一般很少用,但是在减少过拟合方面,该参数应该还是能起到很大作用的。

13.alpha ——L1 正则的惩罚系数[default=0]
参数默认值是1,权重的L1正则化项(类似于Lasso Regression),原文说该参数能应用到很高维度的情况,可以让算法的速度更快(有待测试)。

14.lambda_bias——在偏置上的L2正则[default=0]**
在L1上没有偏置项的正则,因为L1时偏置不重要

15.seed——随机种子数 [ default=0 ]
随机数的种子,用于复现随机数据的结果,也可以用于调整参数。

16.tree_method——数算法[default=近似]
要使用精确的贪婪算法,需要将tree_method设置为“exact”

17.max-leaf-nodes——树上最大的节点或叶子数
直观解释就是:。用于避免决策树的过拟合。试想一颗深度为n的二叉树,其叶子节点数最多为n^2。

18.scale_pos_weight——缩放百分比权重[default=1]
参数默认值是1,该参数用于样本十分不平衡时,把该参数设置为一个正值,可以使算法很快收敛。

19.num_parallel_tree——并行树数量[default=1]

20.eta——收缩步长 [default=0.3],取值范围为:[0,1]
和learning rate类似,通过减小每一步的权重,可以提高模型的鲁棒性。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,防止过拟合,让后面有更大的学习空间。 eta通过缩减特征的权重使提升计算过程更加保守。实际应用中,一般把eta设置得小一点,典型的取值范围是[0.01-0.2]。

21.num_round–迭代次数,取值范围为:[1,+∞]
建立弱分类器数量(也即迭代次数),其数量越大,模型的学习能力就会越强。但是,较大num_round会造成过拟合,且增加到一定程度之后,模型达到上限,不会再增加准确率。

22.gamma——树结点分裂的最低要求 [default=0],取值范围为:[0,+∞]
在树的叶节点上进行进一步分区所需的最小损失减少。控制子树的复杂程度,减低模型复杂度(减少过拟合)这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关。参数默认值是0,我们都知道,XGBoost在分裂节点时都会看分裂后损失函数的增益,只有增益大于一个阈值,才会对节点进行分裂。该参数指定的就是那个阈值,该参数越大,则表示决策树越难进行分裂,也就意味着算法越保守。该参数和损失函数息息相关。

二、调参思路

调参思路来源:https://jiuaidu.com/it/2579833/

(一)详细版本

参数调优的一般方法。我们会使用和GBM中相似的方法。需要进行如下步骤:

  1. 选择较高的学习速率(learning rate)。一般情况下,学习速率的值为0.1。但是,对于不同的问题,理想的学习速率有时候会在0.05到0.3之间波动。选择对应于此学习速率的理想决策树数量。XGBoost有一个很有用的函数“cv”,这个函数可以在每一次迭代中使用交叉验证,并返回理想的决策树数量。
  2. 对于给定的学习速率和决策树数量,进行决策树特定参数调优(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。在确定一棵树的过程中,我们可以选择不同的参数,待会儿我会举例说明。
  3. xgboost的正则化参数的调优。(lambda, alpha)。这些参数可以降低模型的复杂度,从而提高模型的表现。
  4. 降低学习速率,确定理想参数。

第一步:确定学习速率和tree_based 参数调优的估计器数目。

为了确定boosting 参数,我们要先给其它参数一个初始值。咱们先按如下方法取值:
1、max_depth = 5 :这个参数的取值最好在3-10之间。我选的起始值为5,但是你也可以选择其它的值。起始值在4-6之间都是不错的选择。
2、min_child_weight = 1:在这里选了一个比较小的值,因为这是一个极不平衡的分类问题。因此,某些叶子节点下的值会比较小。
3、gamma = 0: 起始值也可以选其它比较小的值,在0.1到0.2之间就可以。这个参数后继也是要调整的。
4、subsample,colsample_bytree = 0.8: 这个是最常见的初始值了。典型值的范围在0.5-0.9之间。
5、scale_pos_weight = 1: 这个值是因为类别十分不平衡。
注意哦,上面这些参数的值只是一个初始的估计值,后继需要调优。这里把学习速率就设成默认的0.1。然后用xgboost中的cv函数来确定最佳的决策树数量。前文中的函数可以完成这个工作。

learning_rate =0.1,
 n_estimators=1000,
 max_depth=5,
 min_child_weight=1,
 gamma=0,
 subsample=0.8,
 colsample_bytree=0.8,
 objective= 'binary:logistic',
 nthread=4,
 scale_pos_weight=1,
 seed=27

从输出结果可以看出,在学习速率为0.1时,理想的决策树数目是140。这个数字对你而言可能比较高,当然这也取决于你的系统的性能。

注意:在AUC(test)这里你可以看到测试集的AUC值。但是如果你在自己的系统上运行这些命令,并不会出现这个值。因为数据并不公开。这里提供的值仅供参考。生成这个值的代码部分已经被删掉了。

第二步: max_depth 和 min_weight 参数调优

我们先对这两个参数调优,是因为它们对最终结果有很大的影响。首先,我们先大范围地粗调参数,然后再小范围地微调。
注意:在这一节我会进行高负荷的栅格搜索(grid search),这个过程大约需要15-30分钟甚至更久,具体取决于你系统的性能。你也可以根据自己系统的性能选择不同的值。

 'max_depth':range(3,10,2),
 'min_child_weight':range(1,6,2)
   learning_rate =0.1
    n_estimators=140,
    max_depth=5,
min_child_weight=1,
gamma=0,
subsample=0.8
colsample_bytree=0.8,
 objective= 'binary:logistic',
  nthread=4,  
     scale_pos_weight=1
      seed=27

至此,我们对于数值进行了较大跨度的12中不同的排列组合,可以看出理想的max_depth值为5,理想的min_child_weight值为5。在这个值附近我们可以再进一步调整,来找出理想值。我们把上下范围各拓展1,因为之前我们进行组合的时候,参数调整的步长是2。

'max_depth':[4,5,6],
 'min_child_weight':[4,5,6]
learning_rate=0.1,
n_estimators=140,
max_depth=5,
 min_child_weight=2, 
 gamma=0, 
 subsample=0.8, 
 colsample_bytree=0.8,
 objective= 'binary:logistic',
  nthread=4, 
  scale_pos_weight=1,
  seed=27

至此,我们得到max_depth的理想取值为4,min_child_weight的理想取值为6。同时,我们还能看到cv的得分有了小小一点提高。需要注意的一点是,随着模型表现的提升,进一步提升的难度是指数级上升的,尤其是你的表现已经接近完美的时候。当然啦,你会发现,虽然min_child_weight的理想取值是6,但是我们还没尝试过大于6的取值。像下面这样,就可以尝试其它值。

 'min_child_weight':[6,8,10,12]
 learning_rate=0.1,
 n_estimators=140,
 max_depth=4,
 min_child_weight=2, 
 gamma=0, 
 subsample=0.8,    
  colsample_bytree=0.8,
 objective= 'binary:logistic', 
 nthread=4,
  scale_pos_weight=1,
  seed=27

我们可以看出,6确确实实是理想的取值了。

第三步:gamma参数调优

在已经调整好其它参数的基础上,我们可以进行gamma参数的调优了。Gamma参数取值范围可以很大,我这里把取值范围设置为5了。你其实也可以取更精确的gamma值。

 'gamma':[i/10.0 for i in range(0,5)]
 learning_rate =0.1,
  n_estimators=140, 
  max_depth=4,
 min_child_weight=6, 
 gamma=0,
  subsample=0.8, 
  colsample_bytree=0.8,
 objective= 'binary:logistic', 
 nthread=4, 
 scale_pos_weight=1,
 seed=27

从这里可以看出来,我们在第一步调参时设置的初始gamma值就是比较合适的。也就是说,理想的gamma值为0。在这个过程开始之前,最好重新调整boosting回合,因为参数都有变化。

从这里可以看出,得分提高了。所以,最终得到的参数是:

 learning_rate =0.1,
 n_estimators=1000,
 max_depth=4,
 min_child_weight=6,
 gamma=0,
 subsample=0.8,
 colsample_bytree=0.8,
 objective= 'binary:logistic',
 nthread=4,
scale_pos_weight=1,
seed=27

第四步:调整subsample 和 colsample_bytree 参数

下一步是尝试不同的subsample 和 colsample_bytree 参数。我们分两个阶段来进行这个步骤。这两个步骤都取0.6,0.7,0.8,0.9作为起始值。

 'subsample':[i/10.0fori in range(6,10)],
 'colsample_bytree':[i/10.0fori in range(6,10)]
learning_rate =0.1, 
n_estimators=177, 
max_depth=3,
 min_child_weight=4,
  gamma=0.1, 
  subsample=0.8,
   colsample_bytree=0.8,
 objective= 'binary:logistic', 
 nthread=4, 
 scale_pos_weight=1,
 seed=27

从这里可以看出来,subsample 和 colsample_bytree 参数的理想取值都是0.8。现在,我们以0.05为步长,在这个值附近尝试取值。

 'subsample':[i/100.0fori in range(75,90,5)],
 'colsample_bytree':[i/100.0fori in range(75,90,5)]
learning_rate =0.1,
 n_estimators=177,
  max_depth=4,
 min_child_weight=6, 
 gamma=0, 
 subsample=0.8, 
 colsample_bytree=0.8,
 objective= 'binary:logistic', 
 nthread=4, 
 scale_pos_weight=1,
 seed=27

我们得到的理想取值还是原来的值。因此,最终的理想取值是:

subsample: 0.8
 colsample_bytree: 0.8

** 第五步:正则化参数调优。**

下一步是应用正则化来降低过拟合。由于gamma函数提供了一种更加有效地降低过拟合的方法,大部分人很少会用到这个参数。但是我们在这里也可以尝试用一下这个参数。我会在这里调整’reg_alpha’参数,然后’reg_lambda’参数留给你来完成。

 'reg_alpha':[1e-5, 1e-2, 0.1, 1, 100]
learning_rate =0.1, 
n_estimators=177, 
max_depth=4,
 min_child_weight=6, 
 gamma=0.1, 
 subsample=0.8, 
 colsample_bytree=0.8,
 objective= 'binary:logistic', 
 nthread=4, 
 scale_pos_weight=1,
 seed=27

我们可以看到,相比之前的结果,CV的得分甚至还降低了。但是我们之前使用的取值是十分粗糙的,我们在这里选取一个比较靠近理想值(0.01)的取值,来看看是否有更好的表现。

 'reg_alpha':[0, 0.001, 0.005, 0.01, 0.05]
learning_rate =0.1, 
n_estimators=177, 
max_depth=4,
 min_child_weight=6, 
 gamma=0.1, 
 subsample=0.8, 
 colsample_bytree=0.8,
 objective= 'binary:logistic',
  nthread=4,
   scale_pos_weight=1
   ,seed=27

可以看到,CV的得分提高了。现在,我们在模型中来使用正则化参数,来看看这个参数的影响。

learning_rate =0.1,
 n_estimators=1000,
 max_depth=4,
 min_child_weight=6,
 gamma=0,
 subsample=0.8,
 colsample_bytree=0.8,
 reg_alpha=0.005,
 objective= 'binary:logistic',
 nthread=4,
 scale_pos_weight=1,
 seed=27

然后我们发现性能有了小幅度提高。

第6步:降低学习速率

最后,我们使用较低的学习速率,以及使用更多的决策树。我们可以用XGBoost中的CV函数来进行这一步工作。

 learning_rate =0.01,
 n_estimators=5000,
 max_depth=4,
 min_child_weight=6,
 gamma=0,
 subsample=0.8,
 colsample_bytree=0.8,
 reg_alpha=0.005,
 objective= 'binary:logistic',
 nthread=4,
 scale_pos_weight=1,
 seed=27

(二)简化版本:

一般Xgboost调优的顺序可以参考如下:

  1. 确定一个较大的学习速率0.1
  2. num_boost_round调优
  3. max_depth 和 min_weight 参数调优
  4. gamma参数调优
  5. 正则化参数调优
  6. 降低学习速率

第一步:关于num_boost_round的调优,一般有两种可选的方法:

首先将num_boost_round设的足够大,然后在运行的过程中我们看训练集和测试集的auc变化,一般来说训练集上面的auc会一直增加,但是测试集上面的auc会随着num_boost_round增大因为过拟合而下降,这样我们就会在训练过程中找到测试集的一个峰值,一旦找到,我们就可以结束训练了。

第二步:max_depth 和 min_weight 参数调优

先对这两个参数调优,是因为它们对最终结果有很大的影响。首先,我们先大范围地粗调参数,然后再小范围地微调。

第三步:gamma参数调优

第四步:调整subsample 和 colsample_bytree 参数

下一步是尝试不同的subsample 和 colsample_bytree 参数。我们分两个阶段来进行这个步骤。这两个步骤都取0.6,0.7,0.8,0.9作为起始值。

第五步:正则化参数调优

下一步是应用正则化来降低过拟合。由于gamma函数提供了一种更加有效地降低过拟合的方法,大部分人很少会用到这个参数。但是我们在这里也可以尝试用一下这个参数。

至此,你可以看到模型的表现有了大幅提升,调整每个参数带来的影响也更加清楚了。

三、总结

1、仅仅靠参数的调整和模型的小幅优化,想要让模型的表现有个大幅度提升是不可能的。GBM的最高得分是0.8487,XGBoost的最高得分是0.8494。确实是有一定的提升,但是没有达到质的飞跃。
2、要想让模型的表现有一个质的飞跃,需要依靠其他的手段,诸如,特征工程(feature egineering) ,模型组合(ensemble of model),以及堆叠(stacking)等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MATLAB第37期】 #保姆级教程 XGBOOST模型参数完整且详细介绍,调参范围、思路及具体步骤介绍 的相关文章

  • 白色像素簇提取

    我正在研究指纹毛孔提取项目 并陷入毛孔 白色像素簇 提取的最后阶段 我有两个输出图像 我们可以从中获取毛孔 但不知道该怎么做 这两个图像的尺寸不同 image1 的尺寸为 240 320 image2 的尺寸为 230 310 这是我的图像
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • MATLAB 图中轴标签与轴之间的距离

    我正在使用 MATLAB 绘制一些数据 我想调整轴标签与轴本身之间的距离 但是 只需向标签的 位置 属性添加一点即可使标签移出图窗窗口 是否有 保证金 属性或类似的东西 在上图中 我想增加数字和标签 Time s 之间的距离 同时自动扩展数
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0

随机推荐

  • http的get请求如何传递一个对象

    原文链接 https www longkui site program frontend httpget 4366 0 前言 以前前台往后台对象时 后台都用POST请求 前台有时候通过拼接参数传参 会显得比较长 所以考虑前台GET请求能否直
  • Linux (Centos)下pip命令出现错误bash: pip: 命令未找到..解决方案

    今天在服务器上跑程序 提示没有XX模块 我就用pip install XX 安装了一下 结果竟然提示pip命令找不到了 pip3能安装 但是pip3 list一看 里面都没有torch包 之前应该都是用pip安装的才对 去网上找了一通 发现
  • 【算法】分支定界

    一 基本描述 类似于回溯法 也是一种在问题的解空间树T上搜索问题解的算法 但在一般情况下 分支限界法与回溯法的求解目标不同 回溯法的求解目标是找出T中满足约束条件的所有解 而分支限界法的求解目标则是找出满足约束条件的一个解 或是在满足约束条
  • React组件的生命周期

    1 组件生命周期概述 什么是组件的生命周期 组件从被创建到挂载到页面中运行 再到组件不用时卸载的过程 这个过程就叫做组件的生命周期 react在组件的生命周期中提供了一系统的钩子函数 可以让开发者在函数中注入代码 这些代码会在适当的时候运行
  • java ip解析_java域名解析

    DNS原理 http amon org dns introduction html 根域 就是所谓的 根域服务器只是具有13个IP地址 但机器数量却不是13台 因为这些IP地址借助了 域的划分 根域下来就是顶级域或者叫一级域 每个域都会有域
  • [element-ui] el-dropdown下拉菜单禁用项没有鼠标悬浮禁用样式

    鼠标移入出现禁用样式 如下图 就是我们想要的效果
  • Blender3.5 - 快捷键

    图形移动 框选 gt 刷选 gt 套索选择 W 游标 相当于形状的中心点 shitf 空格 空格 游标回到世界中心 shift C 移动 移动 G 随意移动 选中图形 G 沿 X 轴移动 选中图形 G X 沿 Y 轴移动 选中图形 G Y
  • 动态内存(智能指针与new)

    文章目录 一 引言 二 动态内存管理 1 使用动态内存的原因 2 智能指针 2 1 shared ptr 2 1 1 shared ptr定义与初始化 2 1 2 shared ptr操作 2 1 3 make shared操作 2 1 4
  • 【剑指 Offer】(四种解法)数组中重复的数字

    剑指 Offer 03 数组中重复的数字 题目描述 在一个长度为 n 的数组 nums 里的所有数字都在 0 n 1 的范围内 数组中某些数字是重复的 但不知道有几个数字重复了 也不知道每个数字重复了几次 请找出数组中任意一个重复的数字 示
  • 微信公众号与企业号的TOKEN验证与使用

    上图是 微信客户端与微信服务端与公众号 企业号的服务器的原理架构 首先 我们如果使用应用服务器 则需要告诉微信服务器 它在哪里 所以TOKEN就是一个标识的作用 TOKEN是一个参数 是一个自定义的值 负责标识微信服务器和应用服务是不是一一
  • unity狼模型、山谷模型

    unity狼模型 山谷模型 模型如下图 下载链接在文末 点我下载资源 https download csdn net download weixin 43474701 60362226
  • 如何使用文件作为参数,调用接口并获取返回数据?

    String path picture 20220420 1 doc 指定文件的路径 或相对路径 File file new File path System out println 文件名 file getName 文件绝对路径 file
  • 百度AI攻略:增值税发票识别

    1 功能描述 在日常工作中经常要用到增值税发票 在使用的时候需要对增值税发表进行检查 验真 录入等很多工作 使用增值税发票识别技术 实现对增值税普票或专票各字段信息的识别和录入 可应用于企业税务核算及内部报销等场景 能够有效减少人工核算工作
  • Tensorflow与Python、CUDA、cuDNN的版本对应表

    1 官方配置 官网只有英文版的才更新到了TensorFlow 2 12 0 中文版只更新到了2 6 0 所以要想看到下面的内容需要进入官网之后将语言更改为英文 经过测试的构建配置 Linux CPU Version Python versi
  • Spring Cloud简介:构建分布式微服务架构的利器

    标题 Spring Cloud简介 构建分布式微服务架构的利器 摘要 本文介绍了Spring Cloud作为构建分布式微服务架构的利器 我们将深入探讨Spring Cloud的重要组件和功能 并通过代码示例展示Spring Cloud的强大
  • 非线性控制1——经典控制和现代控制的区别

    经典控制和现代控制的区别
  • 三次登录验证和验证码功能实现

    三次登录验证和验证码功能实现 最近手头上的事忙的差不多了 就想着自己写写小demo玩一下 结果突然看到我们旧系统的登录好像有点拉胯 然后就自己写了个小demo 指不定哪天就用上了呢 一 pom文件 首先当然是pom文件啦 这里写的比较简单
  • chatgpt赋能python:Python中的三角函数:了解sin、cos和tan

    Python中的三角函数 了解sin cos和tan Python是一种强大的编程语言 可以应用于处理各种数据类型和数学计算 包括三角函数 在这篇文章中 我们将深入了解Python中的三角函数 包括sin cos和tan 什么是三角函数 在
  • 嵌入式平台memcpy实验总结

    1 概述 最近项目中性能比较吃紧 经过跟踪发现 memcpy操作的性能存在一定问题 于是 做了一些尝试去验证一些想法 记录一下 环境 MDK530 Cortex M0芯片 主频80MHz左右 2 优化手段 在优化之前 我们要先确定基本的性能
  • 【MATLAB第37期】 #保姆级教程 XGBOOST模型参数完整且详细介绍,调参范围、思路及具体步骤介绍

    MATLAB第37期 保姆级教程 XGBOOST模型参数完整且详细介绍 调参范围 思路及具体步骤介绍 一 XGBOOST参数介绍 一 模型参数 1 XGBoost模型 default gbtree 有两种模型可以选择gbtree和gblin