使用catboost进行五折交叉验证

import numpy as np
import pandas as pd
import catboost as cbt
from sklearn.metric import f1_score
from sklearn.model_selection import train_test_split
from sklearn.model_selection import StratifiedKFoldtrain_data = pd.read_csv('.....')
train_label = pd.read_csv('.....')
test_data = pd.read_csv('.....')cat_list = [] #catboost中需要处理的离散特征属性列
oof = np.zeros(train_data.shape[0])  #训练集长度
prediction = np.zeros(test_data.shape[0])     #测试集长度
seeds = [2017,2018,2019,2020]     #随机种子
num_model_seed = 1train_x, test_x, train_y, test_y = train_test_split(train_data, train_label, test_size=0.2, random_state = 2019)     #拆分训练集
for model_seed in range(num_model_seed):     #选用几个随机种子oof_cat = np.zeros(train_data.shape[0])prediction_cat = np.zeros(test_data.shape[0])skf = StratifiedKFold(n_splits=5, random_state=seeds[model_seed], shuffle=True) #五折交叉验证,shuffle表示是否打乱数据,若为True再设定随机种子random_statefor index, (train_index, test_index) in enumerate(skf.split(train_data, train_label)): #将数据五折分割train_x, test_x, train_y, test_y = train_data.iloc[train_index], test_data.iloc[test_index], train_label.iloc[train_index], train_label.iloc[test_index]cbt_model = cbt.CatBoostClassifier(iterations=5000, learning_rate=0.1, max_depth=7, verbose=100, early_stopping_rounds=500,task_type='GPU', eval_metric='F1',cat_features=cat_list)     #设置模型参数,verbose表示每100个训练输出打印一次cbt_model.fit(train_x, train_y, eval_set=(test_x, test_y)) #训练五折分割后的训练集gc.collect() #垃圾清理,内存清理oof_cat[test_index] += cbt_model.predict_proba(test_x)[:,1] #prediction_cat += cbt_model.predict_proba(test_data)[:,1]/5print('F1', f1_score(train_label, np.round(oof_cat)))oof += oof_cat / num_model_seed     #五折训练集取均值prediction += prediction_cat / num_model_seed #测试集取均值
print('score', f1_score(train_label, np.round(oof)))##结果写入csv文件
submit = test_data['id']
submit['label'] = (prediction>=0.499).astype(int)
print(submit['label'].value_counts())
submit.to_csv('submission.csv',index=False)

数据挖掘竞赛预测模型——五折交叉验证相关推荐

  1. 五折交叉验证/K折交叉验证, python代码到底怎么写

    五折交叉验证: 把数据平均分成5等份,每次实验拿一份做测试,其余用做训练.实验5次求平均值.如上图,第一次实验拿第一份做测试集,其余作为训练集.第二次实验拿第二份做测试集,其余做训练集.依此类推~ 但 ...

  2. 逻辑回归预测瘀血阻络证||LogRegression 二分类 python3|五折交叉验证

    要求 把数据集分为训练集和测试集使用逻辑回归训练.预测,得出相应的分类指标准确率accuracy,精确率precision,召回率recall,F1-score,并画出最终的ROC曲线,得出AUC值. ...

  3. 在Mnist数据上使用k折交叉验证训练,pytorch代码到底怎么写

    前言 最近学到了K折交叉验证,已经迫不及待去实验一下他的效果是不是如老师讲的一样好,特此写下本文. 本文运行环境为:sklearn.pytorch .jupyter notebook k折交叉验证介绍 ...

  4. 《写给程序员的数据挖掘实践指南》——5.2. 10折交叉验证的例子

    本节书摘来自异步社区出版社<写给程序员的数据挖掘实践指南>一书中的第5章,第5.2节,作者:[美]Ron Zacharski(扎哈尔斯基),更多章节内容可以访问云栖社区"异步社区 ...

  5. 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)

    10折交叉验证我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: 1. 该分类器的精确率怎么样? 2. 该 ...

  6. k折交叉验证优缺点_都说K折交叉验证最常见,你会做吗?

    在临床研究领域,大家特别希望能够未仆先知,于是临床研究者尝试去建立各种预测模型.比如,凭借孕妇的信息预测低出生体重儿的结局.怎么建立预测模型呢?常见的做法是这样的:以低出生体重儿为因变量,以相关的孕妇 ...

  7. 参数调优:K折交叉验证与GridSearch网格搜索

    本文代码及数据集来自<Python大数据分析与机器学习商业案例实战> 一.K折交叉验证 在机器学习中,因为训练集和测试集的数据划分是随机的,所以有时会重复地使用数据,以便更好地评估模型的有 ...

  8. 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)...

    10折交叉验证 我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: 1. 该分类器的精确率怎么样? 2. ...

  9. 5折交叉验证_交叉验证:评估模型表现

    注明:本文章所有代码均来自scikit-learn官方网站 在实际情况中,如果一个模型要上线,数据分析员需要反复调试模型,以防止模型仅在已知数据集的表现较好,在未知数据集上的表现较差.即要确保模型的泛 ...

最新文章

  1. PHP输出结构类型变量输出,php输出形式实例整理
  2. C语言algorithm主函数,C语言中主函数中相关有关问题?
  3. 双频无线网安装设置(5g ) for linux
  4. centos7 編譯 chmsee
  5. GDAL C#中文路径,中文属性名称乱码问题
  6. SOCKET 478/775是两种主板的CPU接口类型
  7. python怎么提高_Python心得--如何提高代码质量
  8. svn在linux下的使用(svn命令行)删除 新增 添加 提交 状态查询 恢...
  9. 佳能Canon PIXMA MP568 一体机驱动
  10. 马斯克血洗推特!传机器学习裁员90%,团队直接解散
  11. flash制作文字笔顺_汉字标准读音与笔顺Flash版
  12. activex与matlab,基于ActiveX技术的LabVIEW与MATLAB混合编程总结
  13. android4.0root,最强大一键ROOT 轻松搞定安卓4.0
  14. Itext与pdfBox坐标定位问题
  15. 数字化营销3大趋势:全域、全链路、全闭环
  16. Linux如何使用find命令将查找出来的文件删除或者复制到另一个位置?
  17. 随机生成26个英文字母
  18. 【愚公系列】2021年12月 VUE3-循环v-for
  19. 注销计算机桌面的东西会没有么,电脑注销会删掉内容吗
  20. 逼死程序员的翟某被媒体起底,疑有 5 个对象离了 4 次获利上亿

热门文章

  1. css 背景图片模糊遮罩效果
  2. rtl8723bu linux wifi驱动移植教程
  3. 春联大全·七字联(1)
  4. LINUX 导入pfx证书
  5. jrtplib学习笔记1
  6. vhost-user
  7. 宁波诺丁汉计算机学院,宁波诺丁汉大学学子帝国理工计算机录取
  8. 读《大四学生收到英国诺丁汉大学博士录取通知书》想到
  9. 跳槽时,这些Java面试题必须会,99%会被问到!
  10. 微机中的实际地址、物理地址、有效地址、逻辑地址之间的区别