机器学习数据集划分留出法,留一法,交叉法,自助法 您所在的位置:网站首页 python实现自助法 机器学习数据集划分留出法,留一法,交叉法,自助法

机器学习数据集划分留出法,留一法,交叉法,自助法

2024-04-02 05:43| 来源: 网络整理| 查看: 265

实验一 模型评估方法-数据集划分

   

1.数据集划分方法

对于一个包含m个样例的数据集,划分训练集S和测试集T的方法有:留出法(hold-out)、交叉验证法(cross validation)、留一法(Leave-One-Out,LOO)和自助法(boostraping)。

1)留出法

留出法:直接将数据集D划分为两个互斥的集合,一个作为训练集S,另一个作为测试集 T,即 D=S∪T,S∩T=∅。

例如:数据集D中包含1000个样例,其中有500个正例和500个反例。我们可以使用 7:3 的比例将其划分为训练集S以及验证集T,这样S中有700个样本,T中有300个样本。在划分的过程中,要尽可能地保证S和T中的正例反例比例相同(也就是数据分布相同,可以使用分层抽样),例如S中700个样本有350个正例和350个反例,T中有150个正例和 150个反例,S和T中正反例的比例均为1:1。

说明:

(a)测试集合和训练集合尽可能保持数据分布的一致性,比如要保证正反样本的比例不变(这是一种导致过拟合的原因);

(b)在给定了训练/测试集合的样本比例之后,仍要存在多种的划分方式,对数据集合D进行分割(单次使用留出法结果往往不够稳定);

(c)训练/测试集合的大小比例问题;

测试集合过小,会导致测评结果的方差变大;

训练集合过小,会导致偏差过大,一般使用的都是2/3~4/5的样本用于训练;

2)交叉验证法(无放回的重采样)

交叉验证法:随机将样本拆分成K个互不相交大小相同的子集,然后用K-1个子集作为训练集训练模型,用剩余的子集测试模型,对K中选择重复进行,最终选出K次测评中的平均测试误差最小的模型。常用的k值有 5、10、20等。下图是10折交叉验证的示意图:

说明:

(a)假设我们确定了折数k,由于进行划分的方法不同,得到的结果也会不同(例如使用不同的随机数种子)。在实际使用中,我们可以进行 p次不同的k折交叉验证,取p*k 次实验结果的平均作为最终的实验结果,这叫做p次k折交叉验证。例如,10次10折交叉验证共进行了100次实验。 (b)与留出法类似,划分为S折存在多种方式,所以为了减小样本划分不同而引入的误差,通常随机使用不同的划分重复P次,即为P次S折交叉验证

3)留一法

留一法:可以看做是交叉验证法的一个特例。假设数据集 D中有 m 个样例,我们将其划分为 m 个互斥的集合进行交叉验证,这种交叉验证方法就被成为留一法。在留一法中,我们每次使用 m-1 个样例进行训练,1 个样例进行测试。这样用训练出的模型和直接使用全部数据集 D 训练出的模型非常接近,但当数据量比较大时,例如数据集包含 100 万个样例,使用留一法意味着我们要训练 100 万个模型,这显然是不现实的。

4)自助法

自助法:留出法每次从数据集 D 中抽取一个样本加入数据集 D′ 中,然后再将该样本放回到原数据集 D 中,即 D 中的样本可以被重复抽取。这样,D 中的一部分样本会被多次抽到,而另一部分样本从未被抽到。假设抽取 m 次,则在 m 次抽样中都没有被抽到的概率为 (1−1/m)m,取极限有:

也就是说,原数据集 D 中约 36.8% 的数据未在 D′ 中出现过,所以我们可以将 D′ 作为训练集,将 D−D′(D 与 D′ 的差集)作为测试集。

说明:自助法适用于数据集较小,难以划分训练、验证集的情况。

代码:自助法

#sklearn机器工具库的使用 #留出法hold_out 划分训练集和测试集 #1)待划分数据集为,2W规模的人脸图像,用不同文件夹分类放置,一类为’male',标签用1表示,另一类为'female',标签用0表示 #2)划分出进二分类训练和测试的数据集,并将划分的数据集存储到本地磁盘,文件名称分别为training.txt和testing.txt import glob import os.path import random import numpy as np

In [3]:

#图片数据集的根目录 ROOT_DIR='face_data\\'

In [4]:

#创建字典result,用于存放划分后的训练集和测试集 result={}

In [5]:

#获取当前目录下所有的子目录,这里x 是一个三元组(root,dirs,files), #第一个元素表示ROOT_DIR当前目录, #第二个元素表示当前目录下的所有子目录, #第三个元素表示当前目录下的所有的文件 sub_dirs = [x[0] for x in os.walk(ROOT_DIR)]

In [6]:

# sub_dirs[0]表示当前文件夹本身的地址,不予考虑,只考虑他的子目录(各个类别) for sub_dir in sub_dirs[1:]: # 获取当前目录下所有的有效图片文件 #创建image_list列表,用于存放图片 image_list=[] # os.path.basename(sub_dir)返回sub_sir最后的文件名 dir_name=os.path.basename(sub_dir) # 通过目录名获取类别的名称,返回将字符串中所有大写字符转换为小写后生成的字符串 label_name=dir_name.lower() #数据集的中图片类型,已知:为Jpg格式 image_glob=os.path.join(ROOT_DIR,dir_name,'*.jpg') image_list.extend(glob.glob(image_glob)) if not image_list:continue # 获得数据集长度 images_length=len(image_list) #创建index_label列表 index_label=[] #根据文件类别,'male’用1表示,‘female'用0表示 if label_name=='male': for i in range(images_length): index_label.insert(i,1) elif label_name=='female': for i in range(images_length): index_label.insert(i,0) #打印输出 print('类别',dir_name,'的图片数量为:',len(image_list)) #存储到字典中 result[label_name]={'imgs':image_list,'label':index_label} 类别 female 的图片数量为: 10038 类别 male 的图片数量为: 10190

In [7]:

imgs_list=result['male']['imgs']+result['female']['imgs'] imgs_label_list=result['male']['label']+result['female']['label'] ​ #打印输出 print('数据集imgs_list图片的数量,总数为:',len(imgs_list)) 数据集imgs_list图片的数量,总数为: 20228

In [8]:

#通过产生的随机数获得抽取样本的序号 round = 1#抽取轮数 bootstrapping_list = []#有重复 bootstrapping=[]#无重复 for j in range(round): bootstrapping = [] for i in range(len(imgs_list)): bootstrapping.append(int(np.floor(np.random.random()*len(imgs_list)))) bootstrapping_list.append(bootstrapping) ​ bootstrapping=list(set(bootstrapping))#去除相同的元素 bootstrapping2=[]#变成二维 bootstrapping2.append(bootstrapping) ​

In [10]:

#训练集存盘 for bootstrap in bootstrapping2: fileTrain = open('sklearn_training_bootstrap'+'.txt', 'w') for i in range(len(bootstrap)): temp_data=imgs_list[bootstrap[i]]+' '+str(imgs_label_list[bootstrap[i]]) fileTrain.write(temp_data) fileTrain.write('\n') fileTrain.close() print("抽取到的训练集数量为:%d"%(len(bootstrapping_list[0]))) 抽取到的训练集数量为:20228 #测试集存盘 #计算测试集图片数据 list1 = list(range(0,20228)) ​ list1_not_in_list2 = [i for i in list1 if i not in bootstrapping]#D−D′(D 与 D′ 的差集) list1_not_in_list3=[] list1_not_in_list3.append(list1_not_in_list2)#把一维的测试集转化成二维 ​ for bootstrap in list1_not_in_list3: fileTrain = open('sklearn_test_bootstrap'+'.txt', 'w') for i in range(len(bootstrap)): temp_data=imgs_list[bootstrap[i]]+' '+str(imgs_label_list[bootstrap[i]]) fileTrain.write(temp_data) fileTrain.write('\n') fileTrain.close() print("剩下的测试集数量为:%d"%(len(list1_not_in_list3[0]))) 剩下的测试集数量为:7435

交叉验证法:

#sklearn机器工具库的使用 #留出法hold_out 划分训练集和测试集 #1)待划分数据集为,2W规模的人脸图像,用不同文件夹分类放置,一类为’male',标签用1表示,另一类为'female',标签用0表示 #2)划分出进二分类训练和测试的数据集,并将划分的数据集存储到本地磁盘,文件名称分别为training.txt和testing.txt import glob import os.path import random import numpy as np from sklearn.model_selection import train_test_split from sklearn.model_selection import StratifiedKFold

In [28]:

#图片数据集的根目录 ROOT_DIR='face_data\\'

In [29]:

#创建字典result,用于存放划分后的训练集和测试集 result={}

In [30]:

#获取当前目录下所有的子目录,这里x 是一个三元组(root,dirs,files), #第一个元素表示ROOT_DIR当前目录, #第二个元素表示当前目录下的所有子目录, #第三个元素表示当前目录下的所有的文件 sub_dirs = [x[0] for x in os.walk(ROOT_DIR)]

In [31]:

#设置数据集划分比例,即训练集:测试集=4:1,训练集占数据集的80% 测试集占比则为20% proportion=0.8

In [32]:

# sub_dirs[0]表示当前文件夹本身的地址,不予考虑,只考虑他的子目录(各个类别) for sub_dir in sub_dirs[1:]: # 获取当前目录下所有的有效图片文件 #创建image_list列表,用于存放图片 image_list=[] # os.path.basename(sub_dir)返回sub_sir最后的文件名 dir_name=os.path.basename(sub_dir) # 通过目录名获取类别的名称,返回将字符串中所有大写字符转换为小写后生成的字符串 label_name=dir_name.lower() #数据集的中图片类型,已知:为Jpg格式 image_glob=os.path.join(ROOT_DIR,dir_name,'*.jpg') image_list.extend(glob.glob(image_glob)) if not image_list:continue # 获得数据集长度 images_length=len(image_list) #创建index_label列表 index_label=[] #根据文件类别,'male’用1表示,‘female'用0表示 if label_name=='male': for i in range(images_length): index_label.insert(i,1) elif label_name=='female': for i in range(images_length): index_label.insert(i,0) #打印输出 print('类别',dir_name,'的图片数量为:',len(image_list)) #存储到字典中 result[label_name]={'imgs':image_list,'label':index_label} 类别 female 的图片数量为: 10038 类别 male 的图片数量为: 10190

In [39]:

#从result字典中取出'male','female'两个类别的数据集放到列表imgs_list中 imgs_list=result['male']['imgs']+result['female']['imgs'] #从result字典中取出'male','female'两个类别的数据集放到列表imgs_label_list中 imgs_label_list=result['male']['label']+result['female']['label'] ​ #打印输出 print('数据集imgs_list图片的数量,总数为:',len(imgs_list)) 数据集imgs_list图片的数量,总数为: 20228

In [38]:

#说明:调用sklearn库API划分数据集 #imgs_training_list 训练集 #imgs_training_label_list 训练集标签 #index_testing_list 测试集 #index_testing_list 测试集标签 #参数test_size代表test集占据的比例 也可以指定train_size #参数random_state用于分割的training和testing集合打乱的个数设定 ​ #5折交叉验证 sklean库的方法帮我们分出了各个子训练集在总图集中的下标 #通过给出的子训练集下标找出对应的字段存入磁盘 #将总数据集平均分成了10份 count=1 imgs_split_list = []#用来存放训练集和测试集的下标 print('完成数据集划分,其中把数据集分成5份:') kf = StratifiedKFold(n_splits=5) for train , valid in kf.split(imgs_list,imgs_label_list): print("第%d份训练集图片数量为:%d,测试集图片数量为:%d"%(count,len(train),len(valid))) print((train,valid)) imgs_split_list.append((train,valid)) count+=1 完成数据集划分,其中把数据集分成5份: 第1份训练集图片数量为:16182,测试集图片数量为:4046 (array([ 2038, 2039, 2040, ..., 20225, 20226, 20227]), array([ 0, 1, 2, ..., 12195, 12196, 12197])) 第2份训练集图片数量为:16182,测试集图片数量为:4046 (array([ 0, 1, 2, ..., 20225, 20226, 20227]), array([ 2038, 2039, 2040, ..., 14203, 14204, 14205])) 第3份训练集图片数量为:16182,测试集图片数量为:4046 (array([ 0, 1, 2, ..., 20225, 20226, 20227]), array([ 4076, 4077, 4078, ..., 16211, 16212, 16213])) 第4份训练集图片数量为:16183,测试集图片数量为:4045 (array([ 0, 1, 2, ..., 20225, 20226, 20227]), array([ 6114, 6115, 6116, ..., 18218, 18219, 18220])) 第5份训练集图片数量为:16183,测试集图片数量为:4045 (array([ 0, 1, 2, ..., 18218, 18219, 18220]), array([ 8152, 8153, 8154, ..., 20225, 20226, 20227]))

In [35]:

#5折5份训练集存盘 ​ ​ count = 1 for cross_list in imgs_split_list: fileTrain = open('sklearn_training_cross_'+str(count)+'.txt', 'w') cross_train_length = len(cross_list[0]) #通过for循环,将训练集图片路径,和标签组成字符串,存储到文件training.txt中 for ip in range(cross_train_length): #使用str()内部函数,将标签的整型变量转变成字符串,并与训练集图片路径拼接 temp_data=imgs_list[cross_list[0][ip]]+' '+str(imgs_label_list[cross_list[0][ip]]) fileTrain.write(temp_data) fileTrain.write('\n') fileTrain.close() print("成功保存训练集文件:{}".format('sklearn_training_cross_'+str(count)+'.txt')) count+= 1 ​ ​ ​ 成功保存训练集文件:sklearn_training_cross_1.txt 成功保存训练集文件:sklearn_training_cross_2.txt 成功保存训练集文件:sklearn_training_cross_3.txt 成功保存训练集文件:sklearn_training_cross_4.txt 成功保存训练集文件:sklearn_training_cross_5.txt

In [36]:

#测试集存盘 #计算测试集图片数据 count = 1 for cross_list in imgs_split_list: fileTrain = open('sklearn_testing_cross_'+str(count)+'.txt', 'w') cross_test_length = len(cross_list[1]) #cross_List的0就是训练集,1是测试集 for ip in range(cross_test_length): temp_data=imgs_list[cross_list[1][ip]]+' '+str(imgs_label_list[cross_list[1][ip]]) fileTrain.write(temp_data) fileTrain.write('\n') fileTrain.close() print("成功保存训练集文件:{}".format('sklearn_training_cross_'+str(count)+'.txt')) count+=1 成功保存训练集文件:sklearn_training_cross_1.txt 成功保存训练集文件:sklearn_training_cross_2.txt 成功保存训练集文件:sklearn_training_cross_3.txt 成功保存训练集文件:sklearn_training_cross_4.txt 成功保存训练集文件:sklearn_training_cross_5.txt

留一法:

#sklearn机器工具库的使用 #留出法hold_out 划分训练集和测试集 #1)待划分数据集为,2W规模的人脸图像,用不同文件夹分类放置,一类为’male',标签用1表示,另一类为'female',标签用0表示 #2)划分出进二分类训练和测试的数据集,并将划分的数据集存储到本地磁盘,文件名称分别为training.txt和testing.txt import glob import os.path import random import numpy as np from sklearn.model_selection import train_test_split from sklearn.model_selection import StratifiedKFold

In [28]:

#图片数据集的根目录 ROOT_DIR='face_data\\'

In [29]:

#创建字典result,用于存放划分后的训练集和测试集 result={}

In [30]:

#获取当前目录下所有的子目录,这里x 是一个三元组(root,dirs,files), #第一个元素表示ROOT_DIR当前目录, #第二个元素表示当前目录下的所有子目录, #第三个元素表示当前目录下的所有的文件 sub_dirs = [x[0] for x in os.walk(ROOT_DIR)]

In [31]:

#设置数据集划分比例,即训练集:测试集=4:1,训练集占数据集的80% 测试集占比则为20% proportion=0.8

In [32]:

# sub_dirs[0]表示当前文件夹本身的地址,不予考虑,只考虑他的子目录(各个类别) for sub_dir in sub_dirs[1:]: # 获取当前目录下所有的有效图片文件 #创建image_list列表,用于存放图片 image_list=[] # os.path.basename(sub_dir)返回sub_sir最后的文件名 dir_name=os.path.basename(sub_dir) # 通过目录名获取类别的名称,返回将字符串中所有大写字符转换为小写后生成的字符串 label_name=dir_name.lower() #数据集的中图片类型,已知:为Jpg格式 image_glob=os.path.join(ROOT_DIR,dir_name,'*.jpg') image_list.extend(glob.glob(image_glob)) if not image_list:continue # 获得数据集长度 images_length=len(image_list) #创建index_label列表 index_label=[] #根据文件类别,'male’用1表示,‘female'用0表示 if label_name=='male': for i in range(images_length): index_label.insert(i,1) elif label_name=='female': for i in range(images_length): index_label.insert(i,0) #打印输出 print('类别',dir_name,'的图片数量为:',len(image_list)) #存储到字典中 result[label_name]={'imgs':image_list,'label':index_label} 类别 female 的图片数量为: 10038 类别 male 的图片数量为: 10190

In [39]:

#从result字典中取出'male','female'两个类别的数据集放到列表imgs_list中 imgs_list=result['male']['imgs']+result['female']['imgs'] #从result字典中取出'male','female'两个类别的数据集放到列表imgs_label_list中 imgs_label_list=result['male']['label']+result['female']['label'] ​ #打印输出 print('数据集imgs_list图片的数量,总数为:',len(imgs_list)) 数据集imgs_list图片的数量,总数为: 20228

In [38]:

#说明:调用sklearn库API划分数据集 #imgs_training_list 训练集 #imgs_training_label_list 训练集标签 #index_testing_list 测试集 #index_testing_list 测试集标签 #参数test_size代表test集占据的比例 也可以指定train_size #参数random_state用于分割的training和testing集合打乱的个数设定 ​ #5折交叉验证 sklean库的方法帮我们分出了各个子训练集在总图集中的下标 #通过给出的子训练集下标找出对应的字段存入磁盘 #将总数据集平均分成了10份 count=1 imgs_split_list = []#用来存放训练集和测试集的下标 print('完成数据集划分,其中把数据集分成5份:') kf = StratifiedKFold(n_splits=5) for train , valid in kf.split(imgs_list,imgs_label_list): print("第%d份训练集图片数量为:%d,测试集图片数量为:%d"%(count,len(train),len(valid))) print((train,valid)) imgs_split_list.append((train,valid)) count+=1 完成数据集划分,其中把数据集分成5份: 第1份训练集图片数量为:16182,测试集图片数量为:4046 (array([ 2038, 2039, 2040, ..., 20225, 20226, 20227]), array([ 0, 1, 2, ..., 12195, 12196, 12197])) 第2份训练集图片数量为:16182,测试集图片数量为:4046 (array([ 0, 1, 2, ..., 20225, 20226, 20227]), array([ 2038, 2039, 2040, ..., 14203, 14204, 14205])) 第3份训练集图片数量为:16182,测试集图片数量为:4046 (array([ 0, 1, 2, ..., 20225, 20226, 20227]), array([ 4076, 4077, 4078, ..., 16211, 16212, 16213])) 第4份训练集图片数量为:16183,测试集图片数量为:4045 (array([ 0, 1, 2, ..., 20225, 20226, 20227]), array([ 6114, 6115, 6116, ..., 18218, 18219, 18220])) 第5份训练集图片数量为:16183,测试集图片数量为:4045 (array([ 0, 1, 2, ..., 18218, 18219, 18220]), array([ 8152, 8153, 8154, ..., 20225, 20226, 20227]))

In [35]:

#5折5份训练集存盘 ​ ​ count = 1 for cross_list in imgs_split_list: fileTrain = open('sklearn_training_cross_'+str(count)+'.txt', 'w') cross_train_length = len(cross_list[0]) #通过for循环,将训练集图片路径,和标签组成字符串,存储到文件training.txt中 for ip in range(cross_train_length): #使用str()内部函数,将标签的整型变量转变成字符串,并与训练集图片路径拼接 temp_data=imgs_list[cross_list[0][ip]]+' '+str(imgs_label_list[cross_list[0][ip]]) fileTrain.write(temp_data) fileTrain.write('\n') fileTrain.close() print("成功保存训练集文件:{}".format('sklearn_training_cross_'+str(count)+'.txt')) count+= 1 ​ ​ ​ 成功保存训练集文件:sklearn_training_cross_1.txt 成功保存训练集文件:sklearn_training_cross_2.txt 成功保存训练集文件:sklearn_training_cross_3.txt 成功保存训练集文件:sklearn_training_cross_4.txt 成功保存训练集文件:sklearn_training_cross_5.txt

In [36]:

#测试集存盘 #计算测试集图片数据 count = 1 for cross_list in imgs_split_list: fileTrain = open('sklearn_testing_cross_'+str(count)+'.txt', 'w') cross_test_length = len(cross_list[1]) #cross_List的0就是训练集,1是测试集 for ip in range(cross_test_length): temp_data=imgs_list[cross_list[1][ip]]+' '+str(imgs_label_list[cross_list[1][ip]]) fileTrain.write(temp_data) fileTrain.write('\n') fileTrain.close() print("成功保存训练集文件:{}".format('sklearn_training_cross_'+str(count)+'.txt')) count+=1 成功保存训练集文件:sklearn_training_cross_1.txt 成功保存训练集文件:sklearn_training_cross_2.txt 成功保存训练集文件:sklearn_training_cross_3.txt 成功保存训练集文件:sklearn_training_cross_4.txt 成功保存训练集文件:sklearn_training_cross_5.txt

流出法:

#sklearn机器工具库的使用 #留出法hold_out 划分训练集和测试集 #1)待划分数据集为,2W规模的人脸图像,用不同文件夹分类放置,一类为’male',标签用1表示,另一类为'female',标签用0表示 #2)划分出进二分类训练和测试的数据集,并将划分的数据集存储到本地磁盘,文件名称分别为training.txt和testing.txt import glob import os.path import random import numpy as np from sklearn.model_selection import train_test_split from sklearn.model_selection import KFold

In [3]:

#图片数据集的根目录 ROOT_DIR='face_data\\'

In [4]:

#创建字典result,用于存放划分后的训练集和测试集 result={}

In [5]:

#获取当前目录下所有的子目录,这里x 是一个三元组(root,dirs,files), #第一个元素表示ROOT_DIR当前目录, #第二个元素表示当前目录下的所有子目录, #第三个元素表示当前目录下的所有的文件 sub_dirs = [x[0] for x in os.walk(ROOT_DIR)]

In [6]:

#设置数据集划分比例,即训练集:测试集=4:1,训练集占数据集的80% 测试集占比则为20% proportion=0.8

In [7]:

# sub_dirs[0]表示当前文件夹本身的地址,不予考虑,只考虑他的子目录(各个类别) for sub_dir in sub_dirs[1:]: # 获取当前目录下所有的有效图片文件 #创建image_list列表,用于存放图片 image_list=[] # os.path.basename(sub_dir)返回sub_sir最后的文件名 dir_name=os.path.basename(sub_dir) # 通过目录名获取类别的名称,返回将字符串中所有大写字符转换为小写后生成的字符串 label_name=dir_name.lower() #数据集的中图片类型,已知:为Jpg格式 image_glob=os.path.join(ROOT_DIR,dir_name,'*.jpg') image_list.extend(glob.glob(image_glob)) if not image_list:continue # 获得数据集长度 images_length=len(image_list) #创建index_label列表 index_label=[] #根据文件类别,'male’用1表示,‘female'用0表示 if label_name=='male': for i in range(images_length): index_label.insert(i,1) elif label_name=='female': for i in range(images_length): index_label.insert(i,0) #打印输出 print('类别',dir_name,'的图片数量为:',len(image_list)) #存储到字典中 result[label_name]={'imgs':image_list,'label':index_label} 类别 female 的图片数量为: 10038 类别 male 的图片数量为: 10190

In [8]:

#从result字典中取出'male','female'两个类别的数据集放到列表imgs_list中 imgs_list=result['male']['imgs']+result['female']['imgs'] #从result字典中取出'male','female'两个类别的数据集放到列表imgs_label_list中 imgs_label_list=result['male']['label']+result['female']['label'] ​ #打印输出 print('数据集imgs_list图片的数量,总数为:',len(imgs_list)) 数据集imgs_list图片的数量,总数为: 20228

In [11]:

#说明:调用sklearn库API划分数据集 #imgs_training_list 训练集 #imgs_training_label_list 训练集标签 #index_testing_list 测试集 #index_testing_list 测试集标签 #参数test_size代表test集占据的比例 也可以指定train_size #参数random_state用于分割的training和testing集合打乱的个数设定 imgs_training_list,imgs_testing_list,imgs_training_label_list,index_testing_list=train_test_split(imgs_list,imgs_label_list, train_size=0.8, random_state=0) ​ #打印输出 print('完成数据集划分,其中:') print('训练集名称为:imgs_training_list,图片数量为:',len(imgs_training_list)) print('测试集名称为:imgs_testing_list,图片数量为:',len(imgs_testing_list)) #训练集存盘 #计算训练集图片数据 imgs_training_length=len(imgs_training_list) ​ fileTrain = open('sklearn_training.txt', 'w') #通过for循环,将训练集图片路径,和标签组成字符串,存储到文件training.txt中 for ip in range(imgs_training_length): #使用str()内部函数,将标签的整型变量转变成字符串,并与训练集图片路径拼接 temp_data=imgs_training_list[ip]+' '+str(imgs_training_label_list[ip]) fileTrain.write(temp_data) fileTrain.write('\n') fileTrain.close() ​ #打印输出 print('完成训练集存盘,文件名称为:sklearn_training.txt') 完成训练集存盘,文件名称为:sklearn_training.txt

In [22]:

#测试集存盘 #计算测试集图片数据 imgs_testing_length=len(imgs_testing_list) ​ fileTest = open('sklearn_testing.txt', 'w') #通过for循环,将测试集图片路径,和标签组成字符串,存储到文件testing.txt中 for ip in range(imgs_testing_length): #使用str()内部函数,将标签的整型变量转变成字符串,并与测试集图片路径拼接 temp_data=imgs_testing_list[ip]+' '+str(index_testing_list[ip]) fileTest.write(temp_data) fileTest.write('\n') fileTest.close() ​ #打印输出 print('完成测试集存盘,文件名称为:sklearn_testing.txt')


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有