第四章 Python数据预处理之划分训练集与测试集

目录

4.1Python代码实现划分训练集和测试集

4.2 交叉验证

4.2.1 交叉验证提出的目的       

4.2.2 留一交叉验证 

 4.2.3 K-折交叉验证

 4.2.3.1 重复随机子抽样验证

4.2.4 嵌套交叉验证

4.2.4.1 k*l 折交叉验证

4.2.4.2 带有验证和测试集的 k 折交叉验证

4.2.4.3 拟合度量

4.2.4.4 时间序列模型的交叉验证    

4.2.5 应用

4.2.6 Python代码实现K-折交叉验证数据集划


 4.1Python代码实现划分训练集和测试集

          伪随机函数介绍网站:https://docs.python.org/3/library/random.html。 

# 导入库
from random import seed # 用于固定每次生成的随机数都是确定的(伪随机数)
from random import randrange # 用于生成随机数

def train_test_split(dataset,train=0.6):
    """
    该函数用于划分训练集和测试集
    Parameters
    ----------
    dataset : 二维列表
        传入需要划分成训练集和测试集的数据集.
    train : 浮点数
        传入训练集占整个数据集的比例.默认是0.6.

    Returns
    -------
    train_basket : 二维列表
        划分好的训练集.
    dataset_copy : 二维列表
        划分好的测试集.
    """
    # 创建一个空列表用于存放后面划分好的训练集
    train_basket = list()
    # 根据输入的训练集的比例计算出训练集的大小(样本数量)
    train_size = train*len(dataset)
    # 复制出一个新的数据集来做切分,从而不改变原始的数据集
    dataset_copy = list(dataset)
    # 执行循环判断,如果训练集的大小小于所占的比例,就一直往训练集里添加数据
    while len(train_basket) < train_size:
        # 通过randrange()函数随机产生训练集的索引
        random_choose = randrange(len(dataset_copy))
        # 根据上面生成的训练集的索引将数据集中的样本加到train_basket中
        # 注意pop函数会根据索引将数据集中的样本给移除,所以循环结束之后剩下的样本就是测试集
        train_basket.append(dataset_copy.pop(random_choose))
    return train_basket,dataset_copy


# 主函数
if '__main__' == __name__:
    # 定义一个随机种子,使得每次生成的随机数都是确定的(伪随机数)
    seed(666)
    dataset = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]
    # 调用手动编写的train_test_split函数划分训练集和测试集
    train,test = train_test_split(dataset)

4.2 交叉验证

        有关交叉验证的网站介绍:https://en.wikipedia.org/wiki/Cross-validation_(statistics)#k-fold_cross-validation(注:下面的一些图片转载自该网站,并非原创)。

        交叉验证[2] [3] [4]有时称为旋转估计[5] [6] [7]样本外测试,其是一种重采样方法,它使用数据的不同部分在不同的迭代中测试和训练模型。在预测问题中,通常给模型一个已知数据集(训练数据集)和一个用于测试模型的未知数据集(或首次看到的数据)(称为验证数据集测试)[8] [9]交叉验证的目标是测试模型预测新数据的能力,以标记过度拟合选择偏差等问题[10]并深入了解模型将如何推广到独立数据集(即未知数据集,例如来自实际问题)。一轮交叉验证涉及将数据样本划分互补子集,对一个子集(称为训练集)执行分析,并在另一个子集(称为验证集测试集)上验证分析。为了减少可变性,在大多数方法中,使用不同的分区执行多轮交叉验证,并将验证结果在各轮中组合(例如求平均准确率)以估计模型的预测性能。总之,交叉验证在预测中结合平均准确率,以得出更准确的模型预测性能。[11]

图1 比较五种分类模型的交叉验证准确率和假阴性(高估)百分比。气泡大小代表交叉验证准确度的标准偏差

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IntelligentRS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值