K-Fold Cross Validation

本文介绍了如何使用scikit-learn库进行数据集划分,通过train_test_split函数创建训练集和测试集。然而,直接使用测试集调整模型参数可能导致过拟合。为了解决这个问题,引入了验证集来选择最佳参数,但这样会减少可用样本。最后,提出了K折交叉验证方法,通过将训练集分为K份进行轮换验证,有效避免了过拟合并提高了模型泛化能力。
摘要由CSDN通过智能技术生成

1、scikit_learn可通过train_test_split函数迅速将数据集分为train和test。

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
>>> from sklearn import datasets
>>> from sklearn import svm

>>> X, y = datasets.load_iris(return_X_y=True)
>>> X.shape, y.shape
((150, 4), (150,))

>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.4, random_state=0)

>>> X_train.shape, y_train.shape
((90, 4), (90,))
>>> X_test.shape, y_test.shape
((60, 4), (60,))

>>> clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
>>> clf.score(X_test, y_test)
0.96...

2、但模型参数如c的选择往往会取决于test的结果,造成overfitting。因此,我们使用validation选择最佳参数,并将该参数用于最终的test。

3、但是,因为将dataset分为三部分:train、validation以及test。可用样本量减少,并且其结果也取决于train和validation的样本量大小设置。

4、因此,K-fold cross validation应运而生。在该方法中,我们将train分为K等分,并从中仍迭代选择一等分作为validation,根据其平均值选择模型参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值