Python-交叉验证得到最优模型?

问题遇到的现象和发生背景

我现在是在使用Python的sklearn做GBDT,现在主要遇到的问题是:使用交叉验证得到最优模型。但问题是我不知道怎么使用k折的交叉验证得到最优模型。因为k折的交叉验证是将数据分为k份数据,每个数据用于模型,但得到的k个模型怎样进行整合,或是怎样得到最优模型?
并且怎么使用随机搜索进行最优参数的选取?

如果你能接受调包的话,就是下面这样
我这里是以决策树模型为例的:
k折交叉验证

# 代码实现
from sklearn.model_selection import cross_val_score
acc = cross_val_score(model, X, y, cv=5)        
# 5折交叉验证,默认是3折,这里没有设置scoring参数,所以是用默认的 'accuracy'(准确度)作为评估标准
print(acc)

# 5折交叉验证的均值
acc.mean()

网格搜索(需要自己输入参数)

import numpy as np
from sklearn.model_selection import GridSearchCV

# 指定参数范围,最大深度,特征选择标准,子节点往下分裂所需的最小样本数
parameters = {'max_depth':np.arange(5,14,2),
             'criterion':['gini','entropy'],
             'min_samples_split':np.arange(5,16,2)}

# 构建决策树模型
model = DecisionTreeClassifier()

# 网格搜索
grid_search = GridSearchCV(model,parameters,scoring='roc_auc',cv=5)

grid_search.fit(X_train,y_train)

# 输出参数的最优值
grid_search.best_params_

可以用现成的工具,这个很成熟了,比如:NNI
简介: 超参自动调优

NNI(重点)
NNI文档:https://nni.readthedocs.io/zh/stable/Tutorial/QuickStart.html
NNI代码:https://github.com/microsoft/nni/blob/master/README_zh_CN.md
视频教程:https://www.bilibili.com/video/BV1SA411x7TB
————————————————
版权声明:本文为CSDN博主「艾鹤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010212101/article/details/125021962

算法优化思路https://zhuanlan.zhihu.com/p/428466235