Python实现K折交叉验证

训练集

​  训练集(Training Dataset)是用来训练模型使用的,在机器学习的7个步骤中,训练集主要在训练阶段使用。

OJLhb6.png

验证集

  当我们的模型训练好之后,我们并不知道模型表现的怎么样,这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不用的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。

  验证集有2个主要的作用:

    ①评估模型效果,为了调整超参数而服务

    ②调整超参数,使得模型在验证集上的效果最好

  验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终的效果以测试集的评估结果为准。

OJOBQA.png

测试集

  我们通过测试集(Test Dataset)来做最终的评估。通过测试集的评估,我们会得到一些最终的评估指标:准确率、精确率、召回率、F1值等。

  三种数据集之间的关系好比:训练集相当于上课学知识;验证集相当于课后的练习题,用来纠正和强化学到的知识;测试集相当于期末考试,用来最终评估学习效果的。

K交叉验证是一种常用的模型评估方法,可以在有限的数据集上尽可能地利用数据来训练和测试模型。在Python中,可以使用scikit-learn库来实现K交叉验证。以下是一个基本的代码示例: ```python from sklearn.model_selection import KFold from sklearn.linear_model import LinearRegression import numpy as np # 准备数据 X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) y = np.array([1, 2, 3, 4]) # 定义K交叉验证 kfold = KFold(n_splits=2, shuffle=True, random_state=0) # 定义模型 model = LinearRegression() # 进行K交叉验证 for train_index, test_index in kfold.split(X): X_train, X_test = X[train_index], X[test_index] y_train, y_test = y[train_index], y[test_index] model.fit(X_train, y_train) print("Train Score:", model.score(X_train, y_train)) print("Test Score:", model.score(X_test, y_test)) ``` 在上面的示例中,我们首先准备了一个包含4个样本和2个特征的数据集,并将目标变量设置为y。然后,我们使用scikit-learn库中的KFold类来定义一个2交叉验证,并将数据集拆分为训练集和测试集。 在每次迭代中,我们从KFold对象中获取训练集和测试集的索引,并将它们用于获取相应的训练数据和测试数据。然后,我们使用训练数据拟合模型,并分别计算训练集得分和测试集得分。 最后,我们可以将训练集得分和测试集得分输出到控制台上。这样我们就可以了解模型在K交叉验证的每个叠中的性能表现。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值