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 自动补全(vim)
Nov 30 Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
python 采集中文乱码问题的完美解决方法
Sep 27 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
python3.9之你应该知道的新特性详解
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
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
Python抽象类的新写法
2015/06/18 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
python爬取m3u8连接的视频
2018/02/28 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
python实现批量转换图片为黑白
2020/06/16 Python
计划生育工作汇报
2014/10/28 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书