K-fold cross-validation_validation

K-fold cross-validation_validationKFold是sklearn中用来做交叉检验的,在sklearn的版本升级中,KFold被挪了地方。在sklearn0.18及以上的版本中,sklearn.cross_validation包被废弃,KFold被挪到了sklearn.model_selection中,本来以为挪就挪了,用法没变就行,结果,,谁用谁知道。cross_validation.KFold与model_selecti…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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_report

def 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_range

    j = 0
    for c_param in c_param_range:
        print('-------------------------------------------')
        print('C parameter: ', c_param)
        print('-------------------------------------------')
        print('')

        recall_accs = []
        #循环进行交叉验证
        for iteration, indices in enumerate(fold,start=1):
            #建立逻辑回归模型,选择正则惩罚类型L1
            lr = 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 += 1
        print('')
        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_range

    j = 0
    for 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 += 1
        print('')
        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装的是五分之一,如下图

K-fold cross-validation_validation

 在旧版本中,将数据切分成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是上图中两部分的合集

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191394.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月2日 上午8:15
下一篇 2026年2月2日 上午8:43


相关推荐

  • c语言之异或运算_c语言运算符优先级表

    c语言之异或运算_c语言运算符优先级表c语言之异或运算异或运算,计算机相关专业比较熟悉了。相同为0,不同为1.结合计算机内部的位运算,a^a=0;与本身异或是为0的。有关的知识运用到数据交互中去。voidint_swap(int*x,int*y){ *y=*x^*y;//step1 *x=*x^*y;//step2 *y=*x^*y;//step3}运用这个函数就能完成两个数据交换。但是并没有提高时间复杂度和空间复杂度,有关书籍上称之为智力游戏。我们来看看数据的变化。假设*x=a,*y=b.*x*y

    2025年6月14日
    4
  • 推荐一个比较好用的画廊展示图片(支持无限轮播)的控件ViewPagerGallery「建议收藏」

    推荐一个比较好用的画廊展示图片(支持无限轮播)的控件ViewPagerGallery「建议收藏」1.在此我们引用支持无限滑动的3D视觉的画廊效果、平面普通广告栏轮播这个例子中有可以运行的效果,大家可以下载下来先看一下,在我开始使用的时候,发现,想要调整pageitem中的间距,比较困难,并没有暴露方法出来。所以就要看一下源代码,发现,在不使用3D效果,即初始化:initBanner(urlList,false),没有什么问题,(这里说的3D效果,就是左右item要比正在显示的ite…

    2022年4月30日
    55
  • ora-01006:绑定变量不存在_ora-00001: 违反唯一约束条件

    ora-01006:绑定变量不存在_ora-00001: 违反唯一约束条件java.sql.SQLException:ORA-01008:并非所有变量都已绑定此异常为sql异常,我遇到的时候看java代码如下publicvoidsavegdzcysxx(Gdzcxxgdzcxx){  Stringsql=”insertintogdzcxx(id,zcmc,ggxh)values(SEQ_GDZC_ID.nextVAL,?,?)”;  Mys

    2025年9月27日
    4
  • CPU idle框架

    CPU idle框架在现代操作系统中 往往很多时候并不需要去执行 cpu 密集型的任务 而每当这个时候 如果去持续的执行循环去等待新的任务发过来 那需要消耗巨大的能量 所以设计人员设计出一种空闲状态以此 CPU 进

    2026年3月20日
    1
  • 常量表达式概念与用处的关系_常量和变量有什么异同点

    常量表达式概念与用处的关系_常量和变量有什么异同点1)什么叫常量表达式?        在编译期间进行求值的表达式。    1、字面值常量是常量表达式;如123,‘a’,3.14等    2、用常量表达式初始化的const对象也是常量表达式。如intconsta=5;语句中a就是常量表达式2)什么地方会用到常量表达式?        就目前所知道的有三个,后面如果发现再新增。

    2026年4月18日
    6
  • ziw文件用什么打开_html文件怎么打开

    ziw文件用什么打开_html文件怎么打开方法1:.ziw格式文件是为知笔记的文本文档,可以用为知笔记打开,直接去为知笔记官方网站下载就可以了,然后该软件的试用期是100天,不过它是经过邮箱注册的,并且没有验证邮箱这一步,所以你在100天之后可以换一个邮箱就可以了,比如之前用QQ邮箱,下次用163邮箱,另外它不会验证邮箱,所以你可以随意伪造一个邮箱登录方法2:直接把文件名后缀名改成.zip,然后解压,解压成功之后生成的是html网页,直接点击index.html就可以在浏览器中打开文件了,里面的图片不要删除,它们是index.html网页要用

    2022年10月12日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号