1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 机器学习-k折交叉验证法(python实现)

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

时间:2021-08-30 08:31:17

相关推荐

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

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

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

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

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

import os, random, shutildef 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.1label0_picknumber=30label1_picknumber=6sample_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')returnif __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)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。