十折交叉验证python_机器学习(十二)交叉验证实例

本文介绍了交叉验证的概念,包括其基本思想和目的。接着详细讲解了常见的交叉验证方法,如Holdout验证、K折交叉验证(包括10折交叉验证)、留一验证,以及StratifiedKFold等,并提供了Python实现示例。文章最后通过一个SVM分类器的ROC曲线分析展示了交叉验证的实际应用。
摘要由CSDN通过智能技术生成

1 交叉验证简介

1.1 交叉验证是什么交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。---来自百科

1.2 为什么需要交叉验证

假设有个未知模型具有一个或多个待定的参数,且有一个数据集能够反映该模型的特征属性(训练集)。适应的过程是对模型的参数进行调整,以使模型尽可能反映训练集的特征。

如果从同一个训练样本中选择独立的样本作为验证集合,当模型因训练集过小或参数不合适而产生过拟合时,验证集的测试予以反映。

总的来说:交叉验证是一种预测模型拟合性能的方法。

2 交叉验证常见的方法

2.1 Holdout 验证将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此分类器的性能指标。

Python Code:from sklearn.model_selection import train_test_splitimport numpy as np

X = np.array([[1, 2], [3, 4],[5,6],[7, 8]])

y = np.array([1, 2, 2, 1])

X_train,X_test,y_train,y_test = train_test_split(X,y, test_size=0.50, random_state = 5)

print("X_train:\n",X_train)

print("y_train:\n",y_train)

print("X_test:\n",X_test)

print("y_test:\n",y_test)

输出X_train: [[5 6]

[7 8]]y_train: [2 1]X_test: [[1 2]

[3 4]]y_test: [1 2]

更好的holdout方法是将原始训练集分为三部分:训练集、验证集和测试集。训练机用于训练不同的模型,验证集用于模型选择。而测试集由于在训练模型和模型选择这两步都没有用到,对于模型来说是未知数据,因此可以用于评估模型的泛化能力。

Holdout方法的步骤

此种方法的好处的处理简单,只需随机把原始数据分为两组即可,其实严格意义来说Hol

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值