python 交叉验证_模型调参必备技能-交叉验证

cc598a06c0ce68b4646c323aaa2dd92f.png

在一般训练监督学习模型的时候,我们一般将数据分为训练集和测试集来进行测试,比如训练集为总样本量的80%,测试集的总样本量剩余的20%。一般考虑将测试数据的评价指标(如准确率)作为整个模型的评价指标,因为我们训练模型不是为了拟合,而是为了预测。

那么在模型验证时候,往往将总样本数据只进行1次的训练和测试的数据划分是不合理的,因为这样我们训练的模型只是提高了那20%数据的准确率。实际在训练模型时我们最常用的方法就是K折交叉验证,英文为K-fold方法。

K折交叉验证非常容易理解,就是将样本集分成K份,依次将其中1份作为测试集,余下作为训练集,那么循环下来就是进行了K次的训练,得到K个评价指标,将这K个评价指标的均值作为模型的评价指标。一般K取值为5或10,根据样本的总体数量决定。

[python]

import numpy as npfrom sklearn.model_selection import KFoldfrom sklearn.svm import SVCclf = SVC(C=0.1)X = np.random.rand(50,4)y = np.random.randint(4,size =(50,1))kf = KFold(n_splits=5)for train_index, test_index in kf.split(X): X_train, X_test = X[train_index], X[test_index] y_train, y_test = y[train_index], y[test_index] model_train = clf.fit(X_train, y_train) y_predict = clf.predict(X_test) print(y_predict)

这种方式的交叉验证,相当于半自动化的拆分,这样做的好处是我们能得到每个测试样本的模型输出结果,有助于我们根据业务模型分析错误结果的原因,总结出到底什么样的数据会经常出错,其实这是一种非常有用的改进模型的方式。

当然在更高级的自动寻参方式如GridsearchCV中,直接一个参数cv=5,函数包就会把你的样本数据进行拆分进行交叉验证,你坐等 查看模型的训练结果即可。但是这相当于是个黑盒,我们只得到了模型评价结果,无法分析具体是哪些样本错了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值