sklearn.KFold「建议收藏」

sklearn.KFold「建议收藏」K折交叉验证:将样本切成K份,每次取其中一份做为测试集,剩余的K-1份做为训练集。在sklearn.model_selection中提供了几种K折交叉验证。生成样本>>>fromsklearn.datasetsimportmake_classification>>>data,target=make_classification(n_…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

简介

K折交叉验证:将样本切成K份,每次取其中一份做为测试集,剩余的K-1份做为训练集。根据训练训练出模型或者假设函数。 把这个模型放到测试集上,得到分类率。计算k次求得的分类率的平均值,作为该模型或者假设函数的真实分类率。

在sklearn.model_selection 中提供了几种K折交叉验证。

生成样本

>>> from sklearn.datasets import make_classification
>>> data,target=make_classification(n_samples=10)
>>> print(target)
[1 1 0 1 1 0 0 1 0 0]

sklearn.model_selection.KFold

KFold按数据原有的顺序对数据进行分割。可以通过定义shuffle来打乱顺序。

>>> from sklearn.model_selection import KFold
>>> kfold= KFold(n_splits=5,random_state =None)
>>> for train_index,test_index in kfold.split(data,target):
...   print("TRAIN:", train_index, "TEST:", test_index)
...   print("TRAIN_target:", target[train_index].mean(), "TEST_target:", target[test_index].mean())
TRAIN: [2 3 4 5 6 7 8 9] TEST: [0 1]
TRAIN_target: 0.375 TEST_target: 1.0
TRAIN: [0 1 4 5 6 7 8 9] TEST: [2 3]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 3 6 7 8 9] TEST: [4 5]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 3 4 5 8 9] TEST: [6 7]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 3 4 5 6 7] TEST: [8 9]
TRAIN_target: 0.625 TEST_target: 0.0

sklearn.model_selection.StratifiedKFold

StratifiedKFold是KFold的一个变种,目的是保证每一个分层标签的比例和原始样本一致。

>>> from sklearn.model_selection import StratifiedKFold    
>>> stkfold= StratifiedKFold(n_splits=5,random_state =None)
>>> for train_index,test_index in stkfold.split(data,target):
...    print("TRAIN:", train_index, "TEST:", test_index)
...    print("TRAIN_target:", target[train_index].mean(), "TEST_target:", target[test_index].mean())
TRAIN: [1 3 4 5 6 7 8 9] TEST: [0 2]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 2 3 4 6 7 8 9] TEST: [1 5]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 4 5 7 8 9] TEST: [3 6]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 3 5 6 7 9] TEST: [4 8]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 3 4 5 6 8] TEST: [7 9]
TRAIN_target: 0.5 TEST_target: 0.5

sklearn.model_selection.RepeatedKFold

重复n次K-Fold ,每次重复有不同的随机性。

>>> from sklearn.model_selection import RepeatedKFold    
>>> rpkfold= RepeatedKFold(n_splits=5,n_repeats=2,random_state =2652124)
>>> for train_index,test_index in rpkfold.split(data,target):
...    print("TRAIN:", train_index, "TEST:", test_index)
...    print("TRAIN_target:", target[train_index].mean(), "TEST_target:", target[test_index].mean())
TRAIN: [0 1 3 4 5 6 7 9] TEST: [2 8]
TRAIN_target: 0.625 TEST_target: 0.0
TRAIN: [0 2 3 4 5 6 8 9] TEST: [1 7]
TRAIN_target: 0.375 TEST_target: 1.0
TRAIN: [0 1 2 4 5 6 7 8] TEST: [3 9]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [1 2 3 4 5 7 8 9] TEST: [0 6]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 3 6 7 8 9] TEST: [4 5]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 3 4 6 7 8 9] TEST: [2 5]
TRAIN_target: 0.625 TEST_target: 0.0
TRAIN: [0 1 2 3 4 5 8 9] TEST: [6 7]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 5 6 7 8 9] TEST: [3 4]
TRAIN_target: 0.375 TEST_target: 1.0
TRAIN: [0 2 3 4 5 6 7 9] TEST: [1 8]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [1 2 3 4 5 6 7 8] TEST: [0 9]
TRAIN_target: 0.5 TEST_target: 0.5

sklearn.model_selection.GroupKFold

按组对样本进行分层。
同一组不会出现在两个不同的分层中(不同组的数量必须至少等于折的数量)。

>>> import numpy as np
>>> from sklearn.model_selection import GroupKFold    
>>> gpkfold= GroupKFold(n_splits=5)
>>> groups = np.array([0, 0, 1 ,1 ,3 ,4 ,1 ,1 ,2 , 2])
>>> for train_index,test_index in gpkfold.split(data,target,groups):
...    print("TRAIN:", train_index, "TEST:", test_index)
...    print("TRAIN_target:", target[train_index].mean(), "TEST_target:", target[test_index].mean())
TRAIN: [0 1 4 5 8 9] TEST: [2 3 6 7]
TRAIN_target: 0.5 TEST_target: 0.5
TRAIN: [0 1 2 3 4 5 6 7] TEST: [8 9]
TRAIN_target: 0.625 TEST_target: 0.0
TRAIN: [2 3 4 5 6 7 8 9] TEST: [0 1]
TRAIN_target: 0.375 TEST_target: 1.0
TRAIN: [0 1 2 3 4 6 7 8 9] TEST: [5]
TRAIN_target: 0.555555555556 TEST_target: 0.0
TRAIN: [0 1 2 3 5 6 7 8 9] TEST: [4]
TRAIN_target: 0.444444444444 TEST_target: 1.0

结论

建模时,一般是使用KFold和StratifiedKFold。需要完成特殊分群的时,比如按月份划分数据,可以使用GroupKFold 。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191520.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 首次安装MySQL,怎么安装?

    首次安装MySQL,怎么安装?在我的下一篇文章中将会介绍如果安装过MySQL,怎么卸载干净,所以在这篇文章中就不考虑是否安装过MySQL了。首次安装MySQL:之前没有安装过就很好办了,安装过的话参考下一篇文章卸载干净再来看这篇文章来安装。由于MYSQL官方提供了Installer方式安装MYSQL服务以及其他组件,所以Windows下安装,卸载,配置MYSQL变得特别简单。一.准备安装包在这里给…

    2022年6月9日
    31
  • 孙鑫的java_孙鑫java视频教程「建议收藏」

    孙鑫的java_孙鑫java视频教程「建议收藏」近几年来,提到java相信很多人都不陌生了吧,Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。也正是由于互联网的快速发展,学习java的人也是越来越多了。需要注意的是,java和我们平时学习的其它计算机语言还是有区别的。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节…

    2022年5月17日
    41
  • pycharm虚拟环境下安装第三方库_pycharm虚拟环境下安装第三方库

    pycharm虚拟环境下安装第三方库_pycharm虚拟环境下安装第三方库文章目录前言一、什么是虚拟环境?二、PyCharm中创建虚拟环境1.virualenv2.pipenv3.conda4.导入环境三、包管理总结前言我们在用python进行开发时,往往不同的项目会使用不同的环境,那么如何让不同的环境并存呢?答案是使用虚拟环境。一、什么是虚拟环境?顾名思义,虚拟环境就是一个虚拟的、从电脑中独立开辟出的环境。有点类似于虚拟机,不同的虚拟机之间即可共存,又互不影响,python中使用的虚拟环境亦如此。比如我想要一个python3.9的环境,我就可以创建一个名为py39.

    2022年8月27日
    5
  • Zabbix监控memcache示例

    Zabbix监控memcache示例

    2021年9月4日
    68
  • kworker_kiekert

    kworker_kiekert通过ps命令查看进程状态时,可以查看到kworker相关,大部分格式都是kworker/u2:0或者kworker/0:0H,查看资料得知:内核中有很多kworker,有绑定cpu的和不绑定cpu的,它支持cpu的hotplug时work的迁移。u:是unbound的缩写,代表没有绑定特定的CPU,kworker/u2:0中的2是work_pool的I…

    2022年9月25日
    0
  • Gamma校正_显示器伽马值调多少

    Gamma校正_显示器伽马值调多少介绍伽马校正的由来,作用以及实践

    2022年9月24日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号