欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 【Python机器学习】模型评估与改进——简单的网格搜索

【Python机器学习】模型评估与改进——简单的网格搜索

2025/9/26 6:19:30 来源:https://blog.csdn.net/weixin_39407597/article/details/140107366  浏览:    关键词:【Python机器学习】模型评估与改进——简单的网格搜索

为了提升模型的泛化性能,我们可以通过调参来实现。

在尝试调参之前,重要的是理解参数的含义,找到一个模型的重要参数(提供最佳泛化性能的参数)的取值是一项棘手的任务,但对于几乎所有模型和数据集来说都是必要的。由于这项任务如此常见,所以scikit-learn中有一些标准方法可以实现,其中最常用的方法就是网格搜索,它只要是指尝试我们关心的参数的所有可能组合。

考虑一个具有RBF(径向基函数)核的核SVM的例子,它在SVC类中实现。它有两个重要参数,:核宽度gamma和正则化参数C。假设我们希望尝试C和gamma都有6个不同的取值,所以总共有36中参数组合,设置表如下所示:

我们可以实现一个简单的网格搜索,在2个参数上使用for循环,对每种参数组合分别训练并评估一个分类器:

from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_splitiris=load_iris()X_train,X_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=0)
print('训练集大小:{} 测试集大小:{}'.format(X_train.shape[0],X_test.shape[0]))best_score=0for gamma in [0.001,0.01,0.1,1,10,100]:for C in [0.001,0.01,0.1,1,10,100]:#对每种参数组合都训练一个SVCsvm=SVC(gamma=gamma,C=C)svm.fit(X_train,y_train)score=svm.score(X_test,y_test)if score>best_score:best_score=scorebest_parameters={'C':C,'gamma':gamma}print('最高精度:{:.2f}'.format(best_score))
print('最好参数组合:{}'.format(best_parameters))

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词