KFold是sklearn中用来做交叉检验的,在sklearn 的版本升级中,KFold被挪了地方。

在sklearn 0.18及以上的版本中,sklearn.cross_validation包被废弃,KFold被挪到了sklearn.model_selection中,本来以为挪就挪了,用法没变就行,结果,,谁用谁知道。

cross_validation.KFold与model_selection.KFold的不同用法

cross_validation.KFold做交叉验证

from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import KFold, cross_val_score
from sklearn.metrics import confusion_matrix,recall_score,classification_reportdef printing_Kfold_scores(x_train_data,y_train_data):fold = KFold(len(y_train_data),5,shuffle=False) #将训练集切分成5份,做交叉验证#正则化惩罚项系数c_param_range = [0.01,0.1,1,10,100]results_table = pd.DataFrame(index = range(len(c_param_range),2), columns = ['C_parameter','Mean recall score'])results_table['C_parameter'] = c_param_rangej = 0for c_param in c_param_range:print('-------------------------------------------')print('C parameter: ', c_param)print('-------------------------------------------')print('')recall_accs = []#循环进行交叉验证for iteration, indices in enumerate(fold,start=1):#建立逻辑回归模型,选择正则惩罚类型L1lr = LogisticRegression(C = c_param, penalty = 'l1')lr.fit(x_train_data.iloc[indices[0],:],y_train_data.iloc[indices[0],:].values.ravel())y_pred_undersample = lr.predict(x_train_data.iloc[indices[1],:].values)recall_acc = recall_score(y_train_data.iloc[indices[1],:].values,y_pred_undersample)#计算召回率recall_accs.append(recall_acc)print('Iteration ', iteration,': recall score = ', recall_acc)results_table.ix[j,'Mean recall score'] = np.mean(recall_accs)j += 1print('')print('Mean recall score ', np.mean(recall_accs))print('')results_table['Mean recall score'] = results_table['Mean recall score'].astype('float64')best_c = results_table.loc[results_table['Mean recall score'].idxmax()]['C_parameter']# Finally, we can check which C parameter is the best amongst the chosen.print('*********************************************************************************')print('Best model to choose from cross validation is with C parameter = ', best_c)print('*********************************************************************************')return best_c

model_selection.KFold做交叉验证

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import KFold, cross_val_score
from sklearn.metrics import confusion_matrix,recall_score,classification_report def printing_Kfold_scores(x_train_data,y_train_data):#将训练集切分成5份,做交叉验证kf = KFold(n_splits=5,shuffle=False)kf.get_n_splits(x_train_data)#正则化惩罚项系数c_param_range = [0.01,0.1,1,10,100]results_table = pd.DataFrame(index = range(len(c_param_range),2), columns = ['C_parameter','Mean recall score'])results_table['C_parameter'] = c_param_rangej = 0for c_param in c_param_range:print('-------------------------------------------')print('C parameter: ', c_param)print('-------------------------------------------')print('')recall_accs = []#循环进行交叉验证for iteration, indices in kf.split(x_train_data):lr = LogisticRegression(C = c_param, penalty = 'l1',solver='liblinear')lr.fit(x_train_data.iloc[iteration,:],y_train_data.iloc[iteration,:].values.ravel())y_pred_undersample = lr.predict(x_train_data.iloc[indices,:].values)recall_acc = recall_score(y_train_data.iloc[indices,:].values,y_pred_undersample)#计算召回率recall_accs.append(recall_acc)print('recall score = ', recall_acc)results_table.ix[j,'Mean recall score'] = np.mean(recall_accs)j += 1print('')print('Mean recall score ', np.mean(recall_accs))print('')results_table['Mean recall score'] = results_table['Mean recall score'].astype('float64')best_c = results_table.loc[results_table['Mean recall score'].idxmax()]['C_parameter']# Finally, we can check which C parameter is the best amongst the chosen.print('*********************************************************************************')print('Best model to choose from cross validation is with C parameter = ', best_c)print('*********************************************************************************')return best_c

在新版中,将数据切分需要两行代码:kf = KFold(n_splits=5,shuffle=False)  、 kf.get_n_splits(x_train_data),用for iteration, indices in kf.split(x_train_data):取出,看到iteration和indices装的是两段index值,iteration装了五分之四,indices装的是五分之一,如下图

在旧版本中,将数据切分成n份就是一句代码:fold = KFold(len(y_train_data),5,shuffle=False),并且切分后用:for iteration, indices in enumerate(fold,start=1):,取出的iteration是1、2、3、4、5这几个数,indices是上图中两部分的合集

cross_validation.KFold与model_selection.KFold的区别相关推荐

  1. 【模型评估与选择】sklearn.model_selection.KFold

    1. 描述 KFold divides all the samples in k groups of samples, called folds (if k = n, this is equivale ...

  2. 机器学习中sklearn.model_selection.KFold的用法详解

    content 类信息 参数信息 类信息 class (n_splits=5, *, shuffle=False, random_state=None sklearn.model_selection. ...

  3. StratifiedKFold(分类)和Kfold(回归)的区别

    一. StratifiedKFlod与KFlod主要区别 StratifiedKFlod:分层采样,训练集与测试集中各类别样本的比列与原始数据中相同:(分类问题) KFlod:分层采样,将数据分成训练 ...

  4. KFold、StratifiedKFold、GroupKFold的区别

    一.问题来源: 在kaggle代码中第一次看到GroupKFold,不太清楚和KFold的区别,所以才想着去搞清楚这个问题 二.KFold >>> import numpy as n ...

  5. 5. KFold, StratifiedKFold,StratifiedShuffleSplit, GroupKFold区别以及Stratified Group KFold

    目录 5. KFold, StratifiedKFold,StratifiedShuffleSplit, GroupKFold区别以及Stratified Group KFold 实现 1. KFol ...

  6. oxford5k和paris6k数据集介绍_sklearn函数:KFold(分割训练集和测试集)

    上一篇介绍了train_test_split函数: 橘猫吃不胖:sklearn函数:train_test_split(分割训练集和测试集)​zhuanlan.zhihu.com 主要场景是,我们想要将 ...

  7. kfold和StratifiedKFold 用法

    kfold和StratifiedKFold 用法 两者区别 代码及结果展示 结果分析 补充:random_state(随机状态) 两者区别 代码及结果展示 from sklearn.model_sel ...

  8. sklearn K折(KFold)交叉验证案例,展开细节代码与cross_validate简写

    文章目录 一.通常的随机森林模型代码 二.K折交叉验证的随机森林代码 1. 切分方式:随机切分 2.切分方式:不均衡数据集下按比例切分 三.KFold的简便写法 四.随机森林预测与KFold交叉验证完 ...

  9. cross-validation:从 holdout validation 到 k-fold validation

    构建机器学习模型的一个重要环节是评价模型在新的数据集上的性能.模型过于简单时,容易发生欠拟合(high bias):模型过于复杂时,又容易发生过拟合(high variance).为了达到一个合理的 ...

最新文章

  1. 机械转行的都干啥去了?机械转行计算机难吗?
  2. 开始启动OPNsense的汉化工作
  3. Windows程序设计:MFC 、Winform 和 WPF 比较
  4. Raid mdadm lvm
  5. java 静态方法与实例方法的区别_静态方法与实例方法的区分
  6. WINCE下I/O操作基础
  7. processon.com - 在线团队协作软件(草巾冒小子)推荐 - 资源篇
  8. 【译】Asp.Net 导出 Excel 数据的9种方案
  9. jar包中的类如何读取包内和包外的配置文件
  10. 利用脚本启动java程序
  11. EXT Column Tree 的应用
  12. 如何在C#中生成与PHP一样的MD5 Hash Code
  13. ADB工具包15秒快速安装器,已集合ADB、FASTBOOT工具箱和最新的驱动程序
  14. 为什么实对称矩阵要求其正交矩阵,而不是可逆矩阵使其对角化?
  15. 惊喜来袭~进阶版《看漫画学Python 2:有趣、有料、好玩、好用》
  16. python 单位根检验代码_Python中ADF单位根检验实现查看结果的方法
  17. php公告滚动源码,如何利用JavaScriptjQuery实现滚动公告栏(代码实例)
  18. Drawio添加自定义图形工具箱
  19. java中八种基本类型及默认值(2015年9月22日)
  20. 小学科学教师 计算机专业,当小学科学教师好还是信息技术教师好?

热门文章

  1. 【BZOJ4247】挂饰 背包
  2. Java二叉树的前中后序遍历
  3. Android Senor Framework (三)SensorService启动
  4. 中国甲基异丁基甲醇行业头部企业市场占有率及排名调研报告
  5. mysql导入数据load data infile用法(将txt文件中的数据导入表中)
  6. 【首尔大学韩国语】第七课 今天是周几?
  7. Linux截取字符串最后两位,linux的string操作(字符串截取,长度计算)
  8. java财务管理项目_基于jsp的个人财务管理-JavaEE实现个人财务管理 - java项目源码...
  9. Qt sqlite 数据库操作封装
  10. 踏雪无痕——2017下半年半年总结