实战案例|K折交叉验证与GridSearch网格搜索

简介: 大家好,我是志斌~今天跟大家分享一下如何用GridSearch网格搜索和K折交叉认证对决策树模型进行参数调优。

大家好,我是志斌~


今天跟大家分享一下如何用GridSearch网格搜索和K折交叉认证对决策树模型进行参数调优。


上一篇文章给大家介绍了决策树模型的搭建和实战,当时只用到了一个参数max_depth,但是模型实际上还有其他影响参数,如criterion(特征选择标准)、class_weight(类别权重)等参数。如果我们想要更精确的结果,那么势必要对模型参数进行调整,找到最优参数,来构建模型。


01K折交叉验证


K折交叉验证实际上是将一个数据集分成K份,每次选K-1份为训练集,用剩下的一份为测试集,然后取K个模型的平均测试结果作为最终的模型效果。如下图所示:


74.png


K值的选取跟数据集的大小有关,数据集较小则增大K值,数据集较大则减小K值。实现代码如下:


from sklearn.model_selection import cross_val_score
acc = cross_val_score(model,X,Y,cv=5)


02GridSearch网格搜索


GridSearch网格搜索是一种穷举搜索的参数调优方法,它会遍历所有的候选参数,并评估每个模型的有效性和准确性,选取最好的参数作为最终结果。


参数调优分为单参数调优和多参数调优,志斌分别给大家举例介绍一下。


01 单参数调优


我们以单参数max_depth参数为例,来演示单参数调优,代码如下:


from sklearn.model_selection import GridSearchCV
param = {'max_depth':[1,3,5,7,9]}
grid_search = GridSearchCV(model,param,scoring='roc_auc',cv=5)grid_search.fit(X_train,Y_train)


输出参数的最优结果:


grid_search.best_params_


得到max_depth参数的最优结果为:


75.png


我们用上面获得的参数最优值重新搭建模型,来查看AUC值是否得到了提高,代码如下:


model = DecisionTreeClassifier(max_depth=7)
model.fit(X_train,Y_train)
y_pred_proba = model.predict_proba(X_test)
from sklearn.metrics import roc_auc_score
score = roc_auc_score(Y_test.values,y_pred_proba[:,1])


得到的AUC值为:


76.png

76.png


比之前的0.958有所上升,看来模型的准确度有所上升。


02

多参数调优


决策树模型有下图这些参数:


77.png


这些参数都会影响我们搭建的决策树模型的准确性,这里我们以max_depth(最大深度)、criterion(特征选择标准)、min_samples_split(子节点向下分裂所需最小样本数),这三个参数为例,来进行多参数调优,代码如下:


from sklearn.model_selection import GridSearchCV
params = {'max_depth':[5,7,9,11,13],'criterion':['gini','entropy'],'min_samples_split':[5,7,9,11,13,15]}
model = DecisionTreeClassifier()
grid_search = GridSearchCV(model,params,scoring='roc_auc',cv=5)
grid_search.fit(X_train,Y_train)


输出参数的最优值:


grid_search.best_params_



78.png

我们用上面获得的参数最优值重新搭建模型,来查看AUC值是否得到了提高,代码如下:


model = DecisionTreeClassifier(criterion='entropy',max_depth=13,min_samples_split=15)
model.fit(X_train,Y_train)
y_pred_proba = model.predict_proba(X_test)
from sklearn.metrics import roc_auc_score
score = roc_auc_score(Y_test.values,y_pred_proba[:,1])


得到的AUC值为:


79.png


比之前的0.985有所提高,看来模型得到进一步优化。


03小结


1. 本文详细介绍了K交叉验证与GridSearch网格搜索,有兴趣的读者可以自己尝试一下。

2. 本文仅供学习,不做它用。

3. 点击在看,即可找志斌领取源码。

相关文章
|
25天前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
39 1
|
21天前
|
人工智能 自然语言处理 语音技术
简介阿里云大模型的基本概况和产品矩阵
阿里云在大模型领域深入研究,推出了通义千问、通义万相、通义听悟等产品,涵盖自然语言处理、图像生成、语音识别等多个方面,同时提供行业专属模型和MaaS平台,致力于为企业和个人用户提供高效、智能的服务。
|
2月前
|
机器学习/深度学习 算法
R语言超参数调优:深入探索网格搜索与随机搜索
【9月更文挑战第2天】网格搜索和随机搜索是R语言中常用的超参数调优方法。网格搜索通过系统地遍历超参数空间来寻找最优解,适用于超参数空间较小的情况;而随机搜索则通过随机采样超参数空间来寻找接近最优的解,适用于超参数空间较大或计算资源有限的情况。在实际应用中,可以根据具体情况选择适合的方法,并结合交叉验证等技术来进一步提高模型性能。
|
4月前
|
机器学习/深度学习 计算机视觉 Python
模型评估与选择:Sklearn中的交叉验证与网格搜索
【7月更文第23天】在机器学习项目中,模型的评估与选择是至关重要的步骤,它直接关系到模型的泛化能力和最终的应用效果。Scikit-learn(简称sklearn)作为Python中最受欢迎的机器学习库之一,提供了丰富的工具来进行模型调优和性能评估,其中交叉验证(Cross-Validation, CV)与网格搜索(Grid Search)是两个核心组件。本文将深入探讨这两项技术,并通过代码示例展示其在实践中的应用。
81 8
|
4月前
|
机器学习/深度学习 数据采集 算法
Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战
Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战
124 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
心得经验总结:机器翻译评测——BLEU算法详解(新增在线计算BLEU分值)
心得经验总结:机器翻译评测——BLEU算法详解(新增在线计算BLEU分值)
117 0
|
6月前
|
前端开发 数据可视化 算法
r语言Bootstrap自助法重采样构建统计量T抽样分布近似值可视化|代码分享
r语言Bootstrap自助法重采样构建统计量T抽样分布近似值可视化|代码分享
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
R语言SVR支持向量机多元回归、网格搜索超参数优化预测猪粮比价格变动率数据
R语言SVR支持向量机多元回归、网格搜索超参数优化预测猪粮比价格变动率数据
|
6月前
|
机器学习/深度学习
模型选择与调优:scikit-learn中的交叉验证与网格搜索
【4月更文挑战第17天】在机器学习中,模型选择和调优至关重要,scikit-learn提供了交叉验证和网格搜索工具。交叉验证(如k折、留一法和分层k折)用于评估模型性能和参数调优。网格搜索(如GridSearchCV和RandomizedSearchCV)遍历或随机选择参数组合以找到最优设置。通过实例展示了如何使用GridSearchCV对随机森林模型进行调优,强调了理解问题和数据的重要性。
|
6月前
|
机器学习/深度学习 Python
【Python 机器学习专栏】模型选择中的交叉验证与网格搜索
【4月更文挑战第30天】交叉验证和网格搜索是机器学习中优化模型的关键技术。交叉验证通过划分数据集进行多次评估,如K折和留一法,确保模型性能的稳定性。网格搜索遍历预定义参数组合,寻找最佳参数设置。两者结合能全面评估模型并避免过拟合。Python中可使用`sklearn`库实现这一过程,但需注意计算成本、过拟合风险及数据适应性。理解并熟练应用这些方法能提升模型性能和泛化能力。
254 0