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

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

文章目录

  • 前言
    • 机器学习训练技巧之路。
  • 一、StratifiedKFold是什么?
  • 二、使用步骤
  • 总结


前言

机器学习训练技巧之路。

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

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


总结

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

你可能感兴趣的:(数据集预处理,pytorch,人工智能,python)