sklearn中的交叉验证(Cross-Validation)
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折交叉验证)
- 将数据集平均分割成K个等份
- 使用1份数据作为测试数据,其余作为训练数据
- 计算测试准确率
- 使用不同的测试集,重复2、3步骤
- 对测试准确率做平均,作为对未知数据预测准确率的估计
最基础的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中进行分裂后train和test的索引值,令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)相关推荐
- 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)
普通train/test set 直接将训练数据划分为两部分,一部分用来做训练train set,一部分用来固定作为测试集test set.然后反复更换超参在训练集上进行训练,使用测试集依次测试,进行 ...
- 交叉验证(Cross Validation)方法思想简介
交叉验证(CrossValidation)方法思想 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(data ...
- 【机器学习】<刘建平Pinard老师博客学习记录>交叉验证(Cross Validation)
交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...
- Sklearn——交叉验证(Cross Validation)
文章目录 1.前言 2.非交叉验证实验 3.交叉验证实验 4.准确率与平方误差 4.1.准确率实验 4.2.均方误差实验 5.Learning curve 检查过拟合 5.1.加载必要模块 5.2.加 ...
- 交叉验证(Cross Validation)最详解
1.OverFitting 在模型训练过程中,过拟合overfitting是非常常见的现象.所谓的overfitting,就是在训练集上表现很好,但是测试集上表现很差.为了减少过拟合,提高模型的泛化能 ...
- 交叉验证 cross validation 与 K-fold Cross Validation K折叠验证
交叉验证,cross validation是机器学习中非常常见的验证模型鲁棒性的方法.其最主要原理是将数据集的一部分分离出来作为验证集,剩余的用于模型的训练,称为训练集.模型通过训练集来最优化其内部参 ...
- 交叉验证(Cross Validation)原理小结
交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...
- matlab 交叉验证 代码,交叉验证(Cross Validation)方法思想简介
本帖最后由 azure_sky 于 2014-1-17 00:30 编辑 2).K-fold Cross Validation(记为K-CV) 将原始数据分成K组(一般是均分),将每个子集数据分别做一 ...
- python交叉验证函数_python – 在sklearn中使用交叉验证和AUC-ROC作为逻辑回归模型...
我正在使用sklearn包来构建逻辑回归模型,然后对其进行评估.具体来说,我想使用交叉验证,但无法通过cross_val_score函数找出正确的方法. 根据我看到的documentation和exa ...
最新文章
- VK Cup 2017 - Round 2
- JSP-BUG-The type java.xx.xx cannot be resolved
- Web框架之Tornado
- Windows Phone
- 秋招开始,求职别慌!C 认证了解一下!
- 深入理解SpringCloud之Eureka注册过程分析
- 初学编程丨从零开始学习编程的基本路线,BAT程序员亲手总结!
- 自学c语言难,c语言难学吗?
- IDS与IPS的区别是什么?
- tab按钮样式 vue_vant 解决tab切换插件标题样式自定义的问题
- python 空字典定义方法
- 辐射光电流测试软件,资深工程师告诉你如何使用示波器测试EMI辐射干扰
- scala程序启动时,Could not locate executable null\bin\winutils.exe in the Hadoop binaries解决方案...
- 考研数学随笔(2)——微分积分关系,中值定理
- ImportError: /home/yang/anaconda3/envs/sar/bin/../lib/libgio-2.0.so.0: undefined symbol: g_unix_get_
- 危化品企业双预防机制数字化建设综合解决方案
- windows串口调试linux工具,推荐一款好用的串口调试软件PuTTY
- 解决win7提示不是正版的问题
- vue(数据请求)框架
- Realm数据库的使用