kfold交叉验证k越大_内部交叉验证

kfold交叉验证k越大_内部交叉验证交叉验证的原理放在后面,先看函数。设X是一个9*3的矩阵,即9个样本,3个特征,y是一个9维列向量,即9个标签。现在我要进行3折交叉验证。执行kFold=KFold(n_splits=3):其中KFold是一个类,n_split=3表示,当执行KFold的split函数后,数据集被分成三份,两份训练集和一份验证集。执行index=kFold.split(X=X):index是一个生成器…

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

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

交叉验证的原理放在后面,先看函数。

设X是一个9*3的矩阵,即9个样本,3个特征,y是一个9维列向量,即9个标签。现在我要进行3折交叉验证。

执行kFold = KFold(n_splits=3) :其中KFold是一个类,n_split=3表示,当执行KFold的split函数后,数据集被分成三份,两份训练集和一份验证集。

执行index  = kFold.split(X=X):index是一个生成器,每个元素是一个元组,元组里面有两个元素,第一个是训练集的索引,第二个是验证集的索引。因为这里将9个样本分成三份,所以index中有三个这样的元组

之后便可以迭代index来获得训练集和验证集的索引,从而获得训练集和测试集了

下面是代码示例

1 importnumpy as np2 from sklearn.model_selection importKFold3

4 a = np.arange(27).reshape(9, 3)5 print(a)6 b = np.arange(9).reshape(9, 1)7 kfold = KFold(n_splits=3, shuffle=True)8 index = kfold.split(X=a)9 print(list(index))10 print(type(index))11 index = kfold.split(X=a, y=b)12 for train_index, test_index inindex:13 print(“————————————————-“)14 print(a[train_index]) #注意如果a是datafram类型就得用a.iloc[tain_index], 因为a[train_index]会被认为是访问列15 print(a[test_index])

运行结果如下:

[[ 0 1 2]

[ 3 4 5]

[ 6 7 8]

[ 9 10 11]

[12 13 14]

[15 16 17]

[18 19 20]

[21 22 23]

[24 25 26]]

[(array([0, 1, 3, 4, 5, 6]), array([2, 7, 8])), (array([1, 2, 3, 4, 7, 8]), array([0, 5, 6])), (array([0, 2, 5, 6, 7, 8]), array([1, 3, 4]))]

————————————————-

[[ 6 7 8]

[ 9 10 11]

[12 13 14]

[18 19 20]

[21 22 23]

[24 25 26]]

[[ 0 1 2]

[ 3 4 5]

[15 16 17]]

————————————————-

[[ 0 1 2]

[ 3 4 5]

[ 9 10 11]

[15 16 17]

[21 22 23]

[24 25 26]]

[[ 6 7 8]

[12 13 14]

[18 19 20]]

————————————————-

[[ 0 1 2]

[ 3 4 5]

[ 6 7 8]

[12 13 14]

[15 16 17]

[18 19 20]]

[[ 9 10 11]

[21 22 23]

[24 25 26]]

Process finished with exit code 0

原理补充:

在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。在训练过程中,经常会出现过拟合的问题,就是模型可以很好的匹配训练数据,却不能很好在预测训练集外的数据。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分做为验证(Validation)数据,用来评估模型的训练效果。

验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,又称循环验证。它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。

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

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

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


相关推荐

  • 体验国产Linux系统,开局就翻车了…

    体验国产Linux系统,开局就翻车了…本文转载自差评,作者差评君可能你们之前在网上看到过别人对Linux操作系统的分析,也在新闻里见过有关国产Linux操作系统的报道。那么你们肯定也见过这些帖子下面的评论区里,不断有人复述着“垃圾”、“难用”。被称作“最美操作系统”的深度OS▼我相信,很多小伙伴是想尝试一下国产Linux操作系统的,但碍于现实条件往往只能作罢。所以,Linux真的难用吗;假如说从明天开始,Windows和苹果MacOS突然不能用了,Linux…

    2022年5月17日
    57
  • 面试之SpringMVC

    面试之SpringMVC面试之SpringMVC

    2022年4月23日
    40
  • 2022年N1叉车司机考试模拟100题及模拟考试

    2022年N1叉车司机考试模拟100题及模拟考试题库来源:安全生产模拟考试一点通公众号小程序2022N1叉车司机试题为N1叉车司机培训试题理论知识考试题库!2022年N1叉车司机考试模拟100题及模拟考试依据N1叉车司机考试教材。N1叉车司机全部考试题库随时根据安全生产模拟考试一点通上练习全部题库。1、【多选题】《中华人民共和国特种设备安全法》第八十四条规定,特种设备使用单位的特种设备存在严重事故隐患,无改造、修理价值,或者达到安全技术规范规定的其他报废条件,未依法履行报废义务,并办理使用登记证书注销手续的。责令停止使用有关特种设备,处()以

    2022年9月6日
    2
  • 多层感知器神经网络实例_多层感知器与bp神经网络

    多层感知器神经网络实例_多层感知器与bp神经网络作者|VivekPatel编译|Flin来源|towardsdatascience除非你能学习到一些东西,否则不要重复造轮子。强大的库已经存在了,如:TensorFlow,PyTorch,Keras等等。我将介绍在Python中创建多层感知器(MLP)神经网络的基本知识。感知器是神经网络的基本组成部分。感知器的输入函数是权重,偏差和输入数据的线性组合。具体来说:in_j=weightinput+bias.(in_j=权重输入+偏差)。在每个感知器上,我们都可以指定一个激活函数g。

    2022年8月30日
    0
  • FindWindowEx 遍历所有窗口

    FindWindowEx 遍历所有窗口 FindWindowEx 唯一麻烦是第2个参数的指定.Explore下窗口是Z序的 ,实际上就是根据第一个参数和第2个参数来找第2个参数后的一个窗口:HWNDchild=0;child=FindWindowEx (NULL,child,NULL,NULL);这样,child就是一个Explore,然后,通过循环能够找到c…

    2022年6月1日
    121
  • Java集合之ArrayList扩容机制

    Java集合之ArrayList扩容机制ArrayList的构造函数//默认初始容量大小(默认能添加10条数据)privatestaticfinalintDEFAULT_CAPACITY=10;//默认实例化一个空数组privatestaticfinalObject[]DEFAULTCAPACITY_EMPTY_ELEMENTDATA={};//默认构造函数,使用初始容量为10构造一个空列表(无参数构造…

    2022年6月7日
    22

发表回复

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

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