Python实现K折交叉验证法的方法步骤


Posted in Python onJuly 11, 2019

学习器在测试集上的误差我们通常称作“泛化误差”。要想得到“泛化误差”首先得将数据集划分为训练集和测试集。那么怎么划分呢?常用的方法有两种,k折交叉验证法和自助法。介绍这两种方法的资料有很多。下面是k折交叉验证法的python实现。

##一个简单的2折交叉验证
from sklearn.model_selection import KFold
import numpy as np
X=np.array([[1,2],[3,4],[1,3],[3,5]])
Y=np.array([1,2,3,4])
KF=KFold(n_splits=2) #建立4折交叉验证方法 查一下KFold函数的参数
for train_index,test_index in KF.split(X):
  print("TRAIN:",train_index,"TEST:",test_index)
  X_train,X_test=X[train_index],X[test_index]
  Y_train,Y_test=Y[train_index],Y[test_index]
  print(X_train,X_test)
  print(Y_train,Y_test)
#小结:KFold这个包 划分k折交叉验证的时候,是以TEST集的顺序为主的,举例来说,如果划分4折交叉验证,那么TEST选取的顺序为[0].[1],[2],[3]。

#提升
import numpy as np
from sklearn.model_selection import KFold
#Sample=np.random.rand(50,15) #建立一个50行12列的随机数组
Sam=np.array(np.random.randn(1000)) #1000个随机数
New_sam=KFold(n_splits=5)
for train_index,test_index in New_sam.split(Sam): #对Sam数据建立5折交叉验证的划分
#for test_index,train_index in New_sam.split(Sam): #默认第一个参数是训练集,第二个参数是测试集
  #print(train_index,test_index)
  Sam_train,Sam_test=Sam[train_index],Sam[test_index]
  print('训练集数量:',Sam_train.shape,'测试集数量:',Sam_test.shape) #结果表明每次划分的数量


#Stratified k-fold 按照百分比划分数据
from sklearn.model_selection import StratifiedKFold
import numpy as np
m=np.array([[1,2],[3,5],[2,4],[5,7],[3,4],[2,7]])
n=np.array([0,0,0,1,1,1])
skf=StratifiedKFold(n_splits=3)
for train_index,test_index in skf.split(m,n):
  print("train",train_index,"test",test_index)
  x_train,x_test=m[train_index],m[test_index]
#Stratified k-fold 按照百分比划分数据
from sklearn.model_selection import StratifiedKFold
import numpy as np
y1=np.array(range(10))
y2=np.array(range(20,30))
y3=np.array(np.random.randn(10))
m=np.append(y1,y2) #生成1000个随机数
m1=np.append(m,y3)
n=[i//10 for i in range(30)] #生成25个重复数据

skf=StratifiedKFold(n_splits=5)
for train_index,test_index in skf.split(m1,n):
  print("train",train_index,"test",test_index)
  x_train,x_test=m1[train_index],m1[test_index]

Python中貌似没有自助法(Bootstrap)现成的包,可能是因为自助法原理不难,所以自主实现难度不大。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现获取域名所用服务器的真实IP
Oct 25 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
关于Django外键赋值问题详解
Aug 13 Python
linux下python使用sendmail发送邮件
May 22 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
python二维键值数组生成转json的例子
Dec 06 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
编写python代码实现简单抽奖器
Oct 20 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 #Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 #Python
详解python实现交叉验证法与留出法
Jul 11 #Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 #Python
Python循环中else,break和continue的用法实例详解
Jul 11 #Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 #Python
python opencv捕获摄像头并显示内容的实现
Jul 11 #Python
You might like
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
深入解析php中的foreach问题
2013/06/30 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
在Python的Django框架中包装视图函数
2015/07/20 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python内存管理机制原理详解
2019/08/12 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
一道Delphi面试题
2016/10/28 面试题
中文专业毕业生自荐书范文
2014/01/04 职场文书
学生鉴定评语大全
2014/05/05 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
运动会开幕式致辞
2015/07/29 职场文书
寒假致家长的一封信
2015/10/10 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript