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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux推荐网站

    Linux推荐网站

    2021年4月29日
  • 12厂商中标中移动TD终端研发

    12厂商中标中移动TD终端研发

    2021年8月8日
  • 本工作站与主域失去信任_电脑域改为工作组后无法登录

    本工作站与主域失去信任_电脑域改为工作组后无法登录Windows7系统在WindowsServer2003中的加域问题,加域时提示:此工作站和主域间的信任关系失败。故障原因:故障原因:这个问题是由于登陆windowsserver2003的域控制器(DC)的网络服务是服务器无法辨识其DS_WEB_SERVICE_REQUIRED值引起的。简单点儿来说,就是服务器不认windows7.了解计算机七层协议的人都知…

    2022年10月18日
  • 关于extreme sports的作文_grantable

    关于extreme sports的作文_grantable尊敬的前辈,    大家好!    我在网上看到了关于extremedb的文章,在实际操作时碰到了一些问题,想和大家探讨一下。1、我先安装了extremedb_3.1_win32_sql_log_eval_1B.EXE,2、然后用安装目录(C:/McObject/eXtremeDB_SQL_LOG/win32/host/bin)下的mcocomp.exe对test.mco文件进行了

    2022年10月14日
  • c++ 11 list转set「建议收藏」

    c++ 11 list转set「建议收藏」list<int> li; for(inti=0;i<100;i++){ li.push_back(i); } for(inti=0;i<100;i++){ li.push_back(i); } unordered_set<int> uset(li.begin(),li.end());//用list去初始化s…

    2022年6月21日
  • 八图h5怎么发给朋友_最酷h5场景

    八图h5怎么发给朋友_最酷h5场景八图h5提供海量h5模板、邀请函、企业宣传、婚礼、会议会展、求职招聘等场景模板,在线一键生成微信邀请函、八图h5全网邀请函在线制作最优惠平台。  为什么场景化h5影响,能在朋友圈火起来?其实纵观这些能引爆朋友圈的H5,无非有以下特点!  1、会讲故事  h5场景说到底就是个新的页面技术,如何玩转h5,主要还是营销和创意,创意其实就是要会说故事,能把故事说好。h5里面整体故事有…

    2022年10月24日

发表回复

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

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