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 Django(图文)
Nov 04 Python
Python性能优化技巧
Mar 09 Python
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
详解Django的MVT设计模式
Apr 29 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
cache_lite试用
2007/02/14 PHP
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
PHP连接access数据库
2015/03/27 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python实现微信远程控制电脑
2018/02/22 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
pycharm安装及如何导入numpy
2020/04/03 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
荆州古城导游词
2015/02/06 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
总结python多进程multiprocessing的相关知识
2021/06/29 Python