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

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

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

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

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

python 复制代码
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris=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=0

for gamma in [0.001,0.01,0.1,1,10,100]:
    for C in [0.001,0.01,0.1,1,10,100]:
        #对每种参数组合都训练一个SVC
        svm=SVC(gamma=gamma,C=C)
        svm.fit(X_train,y_train)
        score=svm.score(X_test,y_test)
        if score>best_score:
            best_score=score
            best_parameters={'C':C,'gamma':gamma}

print('最高精度:{:.2f}'.format(best_score))
print('最好参数组合:{}'.format(best_parameters))
相关推荐
Echo_NGC2237几秒前
【联邦学习完全指南】Part 5:安全攻防与隐私保护
人工智能·深度学习·神经网络·安全·机器学习·联邦学习
m0_74870805几秒前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
清铎1 分钟前
项目_华为杯’数模研赛复盘_第二问
深度学习·算法·机器学习
技术大咖--上好嘉2 分钟前
科技守护温情,智慧康养让陪伴跨越距离
人工智能·科技·ai·生活·健康医疗
100分简历3 分钟前
无图标简洁大方的简历模板下载
人工智能·面试·职场和发展·pdf·编辑器
海绵宝宝_3 分钟前
Chrome强开Gemini助手教程
前端·人工智能·chrome
Dingdangcat865 分钟前
视杯视盘分割与青光眼检测_faster-rcnn_hrnetv2p-w32-1x_coco模型应用实践
python
八月瓜科技5 分钟前
AI侵权频发:国内判例定边界,国际判决敲警钟
大数据·人工智能·科技·深度学习·机器人
喵手6 分钟前
Python爬虫实战:携程景点数据采集实战:从多页列表到结构化数据集(附SQLite持久化存储)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·携程景点数据采集·sqlite存储采集数据
无垠的广袤6 分钟前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测
linux·人工智能·python·opencv·开发板