使用网格搜索 + 交叉验证寻找性能最佳的机器学习模型

本文介绍了如何结合交叉验证和网格搜索来寻找最佳的机器学习模型参数。通过k折交叉验证,将数据集分为训练集和验证集,避免了信息泄露。网格搜索则用于遍历预设的参数组合,通过验证集评估模型性能。最后,使用sklearn的GridSearchCV工具,可以自动完成网格搜索和交叉验证的过程,为模型训练提供最优参数。
摘要由CSDN通过智能技术生成

交叉验证

所谓交叉验证即k折交叉验证。即,将数据集大致均分为k份,每次选择一份作为测试集,其它k-1份作为训练集训练模型,并在测试集上验证其精度,最后可以计算这k-fold测试集上的精度的平均值。总之是,是一个改良的评估模型的方法。

网格搜索

首先选取心仪的参数。如,若想训练一个SVM模型,那么参数C和gamma是可以调节的,假定心仪的参数序列对于C和gamma均是[0.001, 0.01, 0.1, 1, 10, 100],那么可以开一个朴素的二重循环使用每个参数训练模型。

验证集

使用网格搜索每次循环设定的参数训练出一个模型之后,不能直接在测试集上评估当前参数下模型的性能,而应该在验证集上评估。原因是任何根据测试集精度所做的选择都会将测试集的信息泄漏到模型中。 因此,再从训练集中划分出验证集,在网格搜索的二重循环中对模型在验证集上评估,以得到最佳的参数。

网格搜索 + 交叉验证

省略了手动划分测试集的部分,因为k-fold交叉验证会自动划分k次验证机进行交叉验证。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
iris = load_iris()
from sklearn.svm import SVC
import numpy as np
X_trainval, X_test, y_trainval, y_test = train_test_split(iris.data, iris.target, random_state=0)
X_train, X_valid, y_train, y_valid = train_test_split(X_trainval, y_trainval, random_state=1
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值