【python与机器学习 5-2】参数调整——交叉验证和网格搜索

本文介绍了机器学习中模型参数的类型,包括模型自身参数和超参数。重点讲解了如何调整超参数,如依赖经验、使用交叉验证(如5折交叉验证)和网格搜索。通过sklearn库展示了交叉验证的`cross_val_score`和`validation_curve`函数,以及网格搜索的使用,强调了它们在参数选择和避免过拟合中的作用。
摘要由CSDN通过智能技术生成

模型参数

机器学习中有两种类型的模型参数,分为模型自身参数和超参数

模型自身参数

模型自身参数,通过样本学习得到的参数。
如:逻辑回归及神经网络中的权重及偏置的学习等

超参数

超参数是模型框架的参数,通常由手工设定。
如kmeans中的k,神经网络中的网络层数及每层的节点个数。

调参调的都是k,c这样的超参数。

调整参数

我们知道进行机器学习最重要的就是调整参数得到好的学习模型,这里调整参数指的就是超参数,模型自身的参数是不能调整的。
那么如何调参呢?这就是我们接下来要介绍的东西。
我们可以通过以往进行机器学习的经验进行调参,除此之外还可以依靠实验。也就是先用交叉验证评估模型的好坏,再用网格搜索来选择最优参数。(这里针对多个超参数的情况,当只有一个参数时,直接通过交叉验证就可以进行参数的选择)

依靠经验

有经验的人可以根据经验来调整参数。

交叉验证

我们在进行机器学习的时候,把数据集划分为数据集和测试集,通过数据集训练好的模型再将测试集放上去进行测试可以看出模型好坏。不好再进行调参,重新得到新的模型。
上述过程是用一个测试集来检测模型的好坏的,这样不具有普遍性,现实中在产品上线前我们没有数据来测试模型的好坏,但是可以通过训练集近似的比拟上线后的场景进行测试,如何测试呢?
可是使用交叉验证的方法,通过交叉验证,在产品上线之前可以检测出来学习出来的模型哪个好。

交叉验证的思想是把一份数据随机分成三个部分:训练集(training set)、验证集(validation set)、测试集(test set)。训练集用来训练模型,验证集用于模型的选择,测试集用于最终对学习方法的评估。
以高考为例,训练集就是我们平时做的作业,用于训练自己的能力;验证集就是我们的月考、模拟考,用于检验和反馈自己的能力;测试集就是我们的高考,绝对保密,用于最终告诉你的能力水平(分数);
后来又有了k折交叉验证

注意!!!
交叉验证最后得到的结果是验证集的得分。

交叉验证的例子——5折交叉验证

k折交叉验证其实就是把数据集分成若干份,依次取一份作为测试集其它份作为数据集进行训练,然后取所有的结果平均值作为此模型的结果。
下面以5这交叉验证为例。5折交叉验证就是把数据集分成5份,然后进行5此测试,如model1就是将第一折fold1的数据作为测试集,其余的四份作为数据集。最后每个model都计算出来一个准确度accuracy,求平均后作为此验证集的精确度。
这里写图片描述

sklearn进行交叉验证——单一超参数
交叉验证得分cross_val_score()

得到每个交叉验证集的score,即准确率

from sklearn.model_selection import cross_val_score
cross_val_score(estimator, X, y=None, cv=None)

参数:

  • estimator 训练器的选择,如knn
  • X是训练集上的特征
  • y是训练集中要预测的标签
  • cv是交叉验证分为几折

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值