StratifiedKFold K折交叉验证的pytorch实现方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

机器学习训练技巧之路。

提示:以下是本篇文章正文内容,下面案例可供参考

一、StratifiedKFold是什么?

StratifiedKFold在我的理解就是我们在做K折交叉验证的时候,往往因为训练集数据分布不平衡,导致训练集的划分之后,照顾不到有的类别样本数目比较少,划分的时候不在训练集中,模型训练的时候,没看到过它,得到的模型训练的不那么好,因此要采用层次分折划分数据。其实很好理解,就是划分数据集的时候,按照类别的数目来,比如,一个类别个数为100个,那么,我就分90个给训练集,给10个给验证集,另外一个类别为1000个,就分为900:100的样子。

二、使用步骤

代码如下(示例):
sklearn中有这个包,自己调用就好。

from sklearn.model_selection import StratifiedKFold
 with open(‘训练集的json文件路径’, 'r', encoding='utf8') as f:
        json_anns = json.load(f)
    anns = pd.DataFrame(json_anns)
    # 划分10折,意味着9份给训练集,1份给验证集。
    kf = StratifiedKFold(n_splits=10, random_state=2022, shuffle=True)
    # 这是我的数据集中,类别ID,anns.category_id,就是根据这个值来划分
    split_index = next(kf.split(anns, anns.category_id))
    # 分别赋值,然后记得要reset_index表示新的dataframe的索引又是从0开始了。
    train_index, vali_index = split_index[0], split_index[1]
    train_data = anns.iloc[train_index, :].reset_index(drop=True)
    val_data = anns.iloc[vali_index, :].reset_index(drop=True)
    # 得到两个表格,分别为训练集和验证集的,那么,可以自定义pytorch数据集加载类,进行加载数据了


总结

需要好好清修和仔细沉淀一下,把之前做过的事情系统总结一下!

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yez1011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值