栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习-k折交叉验证法(python实现)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习-k折交叉验证法(python实现)

        看了网上的很多k-fold的程序,发现都是机器学习方面的数据操作,而非文件操作(一位不愿意透露姓名的资深大冤种本着“能花钱就不动脑”的原则还付费了几个程序,全是bug,我真的会谢)。 

        然后自己写了一个k-fold的程序,我的数据集是只有两个labels,并且是yolo格式做的标注,所以程序也是按照yolo的文件格式进行编写的,文件夹路径和picknumbers大家可以自己调。注:picknumbers我没有采用int(),因为可能会产生errors(比如你的数据集规模不能整除之类的),所以直接手动指定了具体数值。

        程序应该是完全自动化的,只要自己创建好源文件夹以及吧图片和labels放进去就可以了,目标文件夹用mkdir()自动创建。

        把main里面的for循环去掉,去掉rate的注释部分,就可以当留出法来用了。

        下期会更一些魔改yolov5-backbone的文章,尽请期待。

import os, random, shutil
def copy_img_File(img0_file_Dir,txt0_file_Dir,img1_file_Dir,txt1_file_Dir):
    label0_pathDir = os.listdir(img0_file_Dir)    #取图片的原始路径
    label1_pathDir = os.listdir(img1_file_Dir)    #取图片的原始路径
    # filenumber=len(pathDir)
    # rate=0.1    #自定义抽取图片的比例,比方说100张抽10张,那就是0.1
    label0_picknumber=30
    label1_picknumber=6
    sample_label0 = random.sample(label0_pathDir, label0_picknumber)  #随机选取picknumber数量的样本图片
    sample_label1 = random.sample(label1_pathDir, label1_picknumber)  #随机选取picknumber数量的样本图片
    # print (sample)
    for name in sample_label0:
            shutil.copy(img0_file_Dir + name, k_fold_img_tar_Dir + name)
            os.remove(img0_file_Dir + name)
            shutil.copy(txt0_file_Dir + name[0:7] + '.txt', k_fold_txt_tar_Dir + name[0:7] + '.txt')
            os.remove(txt0_file_Dir + name[0:7] + '.txt')
    for name in sample_label1:
            shutil.copy(img1_file_Dir + name, k_fold_img_tar_Dir + name)
            os.remove(img1_file_Dir + name)
            shutil.copy(txt1_file_Dir + name[0:7] + '.txt', k_fold_txt_tar_Dir + name[0:7] + '.txt')
            os.remove(txt1_file_Dir + name[0:7] + '.txt')
    return

if __name__ == '__main__':
    img0_file_Dir = "./ORimg0/"  # 源图片文件夹路径
    txt0_file_Dir = "./ORtxt0/"
    img1_file_Dir = "./ORimg1/"  # 源图片文件夹路径
    txt1_file_Dir = "./ORtxt1/"
    for i in range(10):
        os.mkdir('./Tar_img{}'.format(i))
        os.mkdir('./Tar_txt{}'.format(i))
        k_fold_img_tar_Dir = './Tar_img{}/'.format(i)  # 移动到新的文件夹路径
        k_fold_txt_tar_Dir = './Tar_txt{}/'.format(i)  # 移动到新的文件夹路径
        copy_img_File(img0_file_Dir, txt0_file_Dir, img1_file_Dir, txt1_file_Dir)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/828891.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号