拆分数据集(train和test)

简单的从一个文件夹随机抽取一定数量图片到另一个文件夹。

import os, random, shutil
def moveFile(fileDir):
        pathDir = os.listdir(fileDir)    #文件夹路径下的所有图片名以list方式存储
        filenumber=len(pathDir)
        #picknumber=100(想取图片数量)
        # 想以一定比率抽取图片则为
        rate=0.2    #rate=想取图片数量/文件夹下面所有图片数量
        picknumber=int(filenumber*rate) #想取图片数量(整数)
        sample = random.sample(pathDir, picknumber)  #在图片名list中随机选取
        print (sample)
        for name in sample:
                shutil.move(fileDir+name, tarDir+name)
if __name__ == '__main__':
    fileDir = "./source-data-file/"    #源图片文件夹路径
    tarDir = './result-data-file/'    #移动到新的文件夹路径
    moveFile(fileDir)

随机读取文件夹下面的所有文件名,写入到txt

import random
from random import shuffle
path = "C:/Users/eadhaw/Desktop/1223test/train/"
new_path = "C:/Users/eadhaw/Desktop/1223test/train.txt"
files = os.listdir(path)
shuffle(files)
#print(files)

for filename in files:
    f_path = path + filename
    print(filename[:-4])
    f = open(new_path,"a+")
    f.write(filename[:-4])     # 保存的文件名不要后面四位(.png)
    f.write("\n")
    f.close()

交叉验证概念

百度百科:交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

数据集定义:

训练数据集:训练模型;
验证数据集:验证模型的效果;如果模型的效果不好,则重新调整参数再次训练新的模型,直到找到了一组参数,使得模型针对验证数据集来说已经达到最优了;(调整超参数使用的数据集)
测试数据集:将此数据集传入由验证数据集得到的最佳模型,得到模型最终的性能;(作为衡量最终模型性能的数据集)

k折交叉验证

将原始数据集分割为训练数据集和测试数据集,再将训练数据集分割为 k 个样本子集,依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集。这样算是一次实验,而k折交叉验证只有实验k次才算完成完整的一次,也就是说交叉验证实际是把实验重复做了k次(保证k个部分的数据都分别做过验证集)训练出 k 个模型,每一个模型都在对应的验证数据集上求出其性能的指标,k 个模型的性能指标的平均值作为最终衡量该组参数对应的模型的性能指标。
一组参数训练出 k 个模型,如果最终指标不理想,重新调整参数,再次得到这 k 个模型的性能指标的均值。
借鉴https://www.cnblogs.com/volcao/p/9291831.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。