当前位置:   article > 正文

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

stratifiedkfold 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数据集加载类,进行加载数据了

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/629094
推荐阅读
相关标签
  

闽ICP备14008679号