Python 实现K折交叉验证

有时候进行十次十折数据分块实现交叉验证的时候需要每一折的训练测试集。写了个小函数,用的时候直接for循环调用就行。

import numpy as np  # 导入numpy包
from sklearn.model_selection import KFold  # 从sklearn导入KFold包

#输入数据推荐使用numpy数组,使用list格式输入会报错
def K_Flod_spilt(K,fold,data,label):
    '''
    :param K: 要把数据集分成的份数。如十次十折取K=10
    :param fold: 要取第几折的数据。如要取第5折则 flod=5
    :param data: 需要分块的数据
    :param label: 对应的需要分块标签
    :return: 对应折的训练集、测试集和对应的标签
    '''
    split_list = []
    kf = KFold(n_splits=K)
    for train, test in kf.split(data):
        split_list.append(train.tolist())
        split_list.append(test.tolist())
    train,test=split_list[2 * fold],split_list[2 * fold + 1]
    return  data[train], data[test], label[train], label[test]  #已经分好块的数据集
  • 14
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
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折交叉验证的每个折叠中的性能表现。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值