zoukankan      html  css  js  c++  java
  • 数据集划分方法

    注:本文是人工智能研究网的学习笔记

    K折交叉验证

    模块
    sklearn.model_selection.KFold
    sklearn.model_selection.GroupKFold
    sklearn.model_selection.StratifiedKFold

    核心思想

    1. 将全部训练集S划分成k个不相交的子集,假设S中训练样例的个数为m,那么每一个子集有m/k个训练样例,相应的子集成为{s1, s2, s3...,sk}。
    2. 每次从分好的子集里面,拿出一个作为测试集,其他k-1个作为训练集。
    3. 在k-1个训练集上训练处学习器模型。
    4. 把这个模型放到测试集上,得到分类率。
    5. 计算k次求得的分类率的平均值,作为该模型或者假设函数的真实分类率。

    这个方法充分利用了所有的样本,但是计算繁琐,需要训练k次,测试k次。

    留一法

    模块
    sklearn.model_selection.LeaveOneOut
    sklearn.model_selection.LeaveOneGroupOut
    sklearn.model_selection.LeavePOut
    sklearn.model_selection.LeavePGroupsOut

    核心思想

    留一法验证(Leave-one-out,L00):假设有N个样本,将每一个样本作为测试样本,其他N-1个样本作为训练样本。这样得到N个分类器,N个测试结果。用这N个结果的平均值来衡量模型的性能。
    如果LOO与k-fold CV比较,LOO在N个样本上简历N个模型而不是K个。更进一步,N个模型的每一个都是在N-1个样本上训练得,而不(k-1)n/k。两种方法中,假定k不是很大并且k<<N。LOO比k-old更加耗时。

    留P法验证(Leave-p-out):有N个样本,将每p个样本作为测试样本,其他N-P个样本作为训练样本,这样得到Cnp个训练测试对。当P>1时,测试集将会发生重叠,当P=1时,就变成了留一法。

    随机划分法

    模块
    sklearn.model_selection.ShuffleSplit
    sklearn.model_selection.GroupShuffleSplit
    sklearn.model_selection.StratifiedShuffleSplit

    核心思想

    ShuffleSplit迭代器产生指定数量的独立的train / test 数据集划分。首先对样本全体随机打乱,然后在划分出 train / test 对。可是使用随机数种子randon_state来控制随机数序列发生器使得运算结果可重现。

    ShuffleSplit是KFold交叉验证的比较好的替代,它允许更好的控制迭代次数和train / test样本比例。

    StratifiedShuffleSplit是ShuffleSplit的一个变体,返回分层划分,也就是在创建划分的时候要保证每个划分中类的样本比例与整体数据集中的原始比例保持一致。

  • 相关阅读:
    数学之矩阵快速幂
    数学篇之高斯消元
    P1033自由落体
    P1258小车问题
    P1072Hankson的趣味题
    P2837晚餐队列安排
    P3811 乘法逆元
    P1002过河卒
    P1507 NASA的食物计划
    P1079 Vigenère 密码
  • 原文地址:https://www.cnblogs.com/cnkai/p/7755108.html
Copyright © 2011-2022 走看看