数据挖掘竞赛预测模型——五折交叉验证
使用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)
数据挖掘竞赛预测模型——五折交叉验证相关推荐
- 五折交叉验证/K折交叉验证, python代码到底怎么写
五折交叉验证: 把数据平均分成5等份,每次实验拿一份做测试,其余用做训练.实验5次求平均值.如上图,第一次实验拿第一份做测试集,其余作为训练集.第二次实验拿第二份做测试集,其余做训练集.依此类推~ 但 ...
- 逻辑回归预测瘀血阻络证||LogRegression 二分类 python3|五折交叉验证
要求 把数据集分为训练集和测试集使用逻辑回归训练.预测,得出相应的分类指标准确率accuracy,精确率precision,召回率recall,F1-score,并画出最终的ROC曲线,得出AUC值. ...
- 在Mnist数据上使用k折交叉验证训练,pytorch代码到底怎么写
前言 最近学到了K折交叉验证,已经迫不及待去实验一下他的效果是不是如老师讲的一样好,特此写下本文. 本文运行环境为:sklearn.pytorch .jupyter notebook k折交叉验证介绍 ...
- 《写给程序员的数据挖掘实践指南》——5.2. 10折交叉验证的例子
本节书摘来自异步社区出版社<写给程序员的数据挖掘实践指南>一书中的第5章,第5.2节,作者:[美]Ron Zacharski(扎哈尔斯基),更多章节内容可以访问云栖社区"异步社区 ...
- 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)
10折交叉验证我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: 1. 该分类器的精确率怎么样? 2. 该 ...
- k折交叉验证优缺点_都说K折交叉验证最常见,你会做吗?
在临床研究领域,大家特别希望能够未仆先知,于是临床研究者尝试去建立各种预测模型.比如,凭借孕妇的信息预测低出生体重儿的结局.怎么建立预测模型呢?常见的做法是这样的:以低出生体重儿为因变量,以相关的孕妇 ...
- 参数调优:K折交叉验证与GridSearch网格搜索
本文代码及数据集来自<Python大数据分析与机器学习商业案例实战> 一.K折交叉验证 在机器学习中,因为训练集和测试集的数据划分是随机的,所以有时会重复地使用数据,以便更好地评估模型的有 ...
- 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)...
10折交叉验证 我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: 1. 该分类器的精确率怎么样? 2. ...
- 5折交叉验证_交叉验证:评估模型表现
注明:本文章所有代码均来自scikit-learn官方网站 在实际情况中,如果一个模型要上线,数据分析员需要反复调试模型,以防止模型仅在已知数据集的表现较好,在未知数据集上的表现较差.即要确保模型的泛 ...
最新文章
- PHP输出结构类型变量输出,php输出形式实例整理
- C语言algorithm主函数,C语言中主函数中相关有关问题?
- 双频无线网安装设置(5g ) for linux
- centos7 編譯 chmsee
- GDAL C#中文路径,中文属性名称乱码问题
- SOCKET 478/775是两种主板的CPU接口类型
- python怎么提高_Python心得--如何提高代码质量
- svn在linux下的使用(svn命令行)删除 新增 添加 提交 状态查询 恢...
- 佳能Canon PIXMA MP568 一体机驱动
- 马斯克血洗推特!传机器学习裁员90%,团队直接解散
- flash制作文字笔顺_汉字标准读音与笔顺Flash版
- activex与matlab,基于ActiveX技术的LabVIEW与MATLAB混合编程总结
- android4.0root,最强大一键ROOT 轻松搞定安卓4.0
- Itext与pdfBox坐标定位问题
- 数字化营销3大趋势:全域、全链路、全闭环
- Linux如何使用find命令将查找出来的文件删除或者复制到另一个位置?
- 随机生成26个英文字母
- 【愚公系列】2021年12月 VUE3-循环v-for
- 注销计算机桌面的东西会没有么,电脑注销会删掉内容吗
- 逼死程序员的翟某被媒体起底,疑有 5 个对象离了 4 次获利上亿