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中对list去重的多种方法
Sep 18 Python
python实现TCP服务器端与客户端的方法详解
Apr 30 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
六行python代码的爱心曲线详解
May 17 Python
pygame实现打字游戏
Feb 19 Python
python 实现二维列表转置
Dec 02 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
什么是Python包的循环导入
Sep 08 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
Python基于百度AI实现抓取表情包
Jun 27 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实现生成HTML静态页面
2015/11/18 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
强制设为首页代码
2006/06/19 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
django DRF图片路径问题的解决方法
2018/09/10 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
keras打印loss对权重的导数方式
2020/06/10 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
学生的自我鉴定范文
2013/10/24 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
消防安全汇报材料
2014/02/08 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
技术员个人工作总结
2015/03/03 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
看雷锋电影观后感
2015/06/10 职场文书
世界名著读书笔记
2015/06/25 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android