sklearn中的交叉验证(Cross-Validation)

cross validation大概的意思是:对于原始数据我们要将其一部分分为traindata,一部分分为test data。train data用于训练,test data用于测试准确率。在test data上测试的结果叫做validation error。将一个算法作用于一个原始数据,我们不可能只做出随机的划分一次train和testdata,然后得到一个validation error,就作为衡量这个算法好坏的标准。因为这样存在偶然性。我们必须多次的随机的划分train data和test data,分别在其上面算出各自的validation error。这样就有一组validationerror,根据这一组validationerror,就可以较好的准确的衡量算法的好坏。crossvalidation是在数据量有限的情况下的非常好的一个evaluate performance的方法。而对原始数据划分出train data和testdata的方法有很多种,这也就造成了cross validation的方法有很多种。

1. train_test_split

对数据集进行快速打乱(分为训练集和测试集)

这里相当于对数据集进行了shuffle后按照给定的test_size 进行数据集划分。

2. cross_val_score

对数据集进行指定次数的交叉验证并为每次验证效果评测

调用方式:

sklearn.cross_validation.cross_val_score(estimator, X, y=None, scoring=None, cv=None,n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs')

返回值就是对于每次不同的的划分raw data时,在test data上得到的分类的准确率。

参数解释:

estimator:是不同的分类器,可以是任何的分类器。比如支持向量机分类器:estimator = svm.SVC(kernel='linear', C=1)

cv:代表不同的cross validation的方法。如果cv是一个int值,并且如果提供了rawtarget参数,那么就代表使用StratifiedKFold分类方式;如果cv是一个int值,并且没有提供rawtarget参数,那么就代表使用KFold分类方式;也可以给定它一个CV迭代策略生成器,指定不同的CV方法。

scoring:默认Nnoe,准确率的算法,可以通过score_func参数指定;如果不指定的话,是用estimator默认自带的准确率算法。

3. KFold  (K折交叉验证)

  1. 将数据集平均分割成K个等份
  2. 使用1份数据作为测试数据,其余作为训练数据
  3. 计算测试准确率
  4. 使用不同的测试集,重复2、3步骤
  5. 对测试准确率做平均,作为对未知数据预测准确率的估计

最基础的CV算法,也是默认采用的CV策略​。主要的参数包括两个,一个是样本数目,一个是k-fold要划分的份数。

 1 fromsklearn.model_selection import KFold
 2 X= np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
 3 y= np.array([1, 2, 3, 4])
 4 kf= KFold(n_splits=2)
 5 kf.get_n_splits(X)#给出K折的折数,输出为2
 6 print(kf)
 7 #输出为:KFold(n_splits=2, random_state=None,shuffle=False)
 8 for train_index, test_index in kf.split(X):
 9 print("TRAIN:",train_index, "TEST:", test_index)
10 X_train,X_test = X[train_index], X[test_index]
11 y_train,y_test = y[train_index], y[test_index]
12 #输出:TRAIN: [2 3] TEST: [0 1]
13 #     TRAIN: [0 1] TEST: [2 3]

##这里kf.split(X)返回的是X中进行分裂后traintest的索引值,令X中数据集的索引为0,1,2,3;第一次分裂,先选择test,索引为0和1的数据集为test,

剩下索引为2和3的数据集为train;第二次分裂,先选择test,索引为2和3的数据集为test,剩下索引为0和1的数据集为train。

转载于:https://www.cnblogs.com/yxh-amysear/p/9447722.html

sklearn中的交叉验证(Cross-Validation)相关推荐

  1. 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)

    普通train/test set 直接将训练数据划分为两部分,一部分用来做训练train set,一部分用来固定作为测试集test set.然后反复更换超参在训练集上进行训练,使用测试集依次测试,进行 ...

  2. 交叉验证(Cross Validation)方法思想简介

    交叉验证(CrossValidation)方法思想 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(data ...

  3. 【机器学习】<刘建平Pinard老师博客学习记录>交叉验证(Cross Validation)

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...

  4. Sklearn——交叉验证(Cross Validation)

    文章目录 1.前言 2.非交叉验证实验 3.交叉验证实验 4.准确率与平方误差 4.1.准确率实验 4.2.均方误差实验 5.Learning curve 检查过拟合 5.1.加载必要模块 5.2.加 ...

  5. 交叉验证(Cross Validation)最详解

    1.OverFitting 在模型训练过程中,过拟合overfitting是非常常见的现象.所谓的overfitting,就是在训练集上表现很好,但是测试集上表现很差.为了减少过拟合,提高模型的泛化能 ...

  6. 交叉验证 cross validation 与 K-fold Cross Validation K折叠验证

    交叉验证,cross validation是机器学习中非常常见的验证模型鲁棒性的方法.其最主要原理是将数据集的一部分分离出来作为验证集,剩余的用于模型的训练,称为训练集.模型通过训练集来最优化其内部参 ...

  7. 交叉验证(Cross Validation)原理小结

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...

  8. matlab 交叉验证 代码,交叉验证(Cross Validation)方法思想简介

    本帖最后由 azure_sky 于 2014-1-17 00:30 编辑 2).K-fold Cross Validation(记为K-CV) 将原始数据分成K组(一般是均分),将每个子集数据分别做一 ...

  9. python交叉验证函数_python – 在sklearn中使用交叉验证和AUC-ROC作为逻辑回归模型...

    我正在使用sklearn包来构建逻辑回归模型,然后对其进行评估.具体来说,我想使用交叉验证,但无法通过cross_val_score函数找出正确的方法. 根据我看到的documentation和exa ...

最新文章

  1. VK Cup 2017 - Round 2
  2. JSP-BUG-The type java.xx.xx cannot be resolved
  3. Web框架之Tornado
  4. Windows Phone
  5. 秋招开始,求职别慌!C 认证了解一下!
  6. 深入理解SpringCloud之Eureka注册过程分析
  7. 初学编程丨从零开始学习编程的基本路线,BAT程序员亲手总结!
  8. 自学c语言难,c语言难学吗?
  9. IDS与IPS的区别是什么?
  10. tab按钮样式 vue_vant 解决tab切换插件标题样式自定义的问题
  11. python 空字典定义方法
  12. 辐射光电流测试软件,资深工程师告诉你如何使用示波器测试EMI辐射干扰
  13. scala程序启动时,Could not locate executable null\bin\winutils.exe in the Hadoop binaries解决方案...
  14. 考研数学随笔(2)——微分积分关系,中值定理
  15. ImportError: /home/yang/anaconda3/envs/sar/bin/../lib/libgio-2.0.so.0: undefined symbol: g_unix_get_
  16. 危化品企业双预防机制数字化建设综合解决方案
  17. windows串口调试linux工具,推荐一款好用的串口调试软件PuTTY
  18. 解决win7提示不是正版的问题
  19. vue(数据请求)框架
  20. Realm数据库的使用

热门文章

  1. PyQt5 图形界面-基础准备:安装Qt Creater、Qt Designer工具,使用Qt Designer设计界面,安装PyQt5工具库
  2. C#的textBox输入法是全角输入的问题解决
  3. 无线网卡掉线解决办法
  4. [BJDCTF2020]EzPHP 1
  5. hdu2973 YAPTCHA
  6. threshold函数
  7. 【笔记】HMM在股票指数中的简单应用
  8. 自信息跟信息熵的区别
  9. 计算机网络与通信这门课难不难,【知乎】计算机网络这门课为何如此之难
  10. 整数加扰java_生成随机顺序,但在java中有约束