700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 机器学习数据集划分留出法 留一法 交叉法 自助法

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

时间:2019-02-09 23:36:32

相关推荐

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

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

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图片的数量,总数为: 8

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])))

抽取到的训练集数量为:8

#测试集存盘

#计算测试集图片数据

list1 = list(range(0,8))

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图片的数量,总数为: 8

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, ..., 5, 6, 7]), array([ 0,1,2, ..., 12195, 12196, 12197]))第2份训练集图片数量为:16182,测试集图片数量为:4046(array([ 0,1,2, ..., 5, 6, 7]), array([ 2038, 2039, 2040, ..., 14203, 14204, 14205]))第3份训练集图片数量为:16182,测试集图片数量为:4046(array([ 0,1,2, ..., 5, 6, 7]), array([ 4076, 4077, 4078, ..., 16211, 16212, 16213]))第4份训练集图片数量为:16183,测试集图片数量为:4045(array([ 0,1,2, ..., 5, 6, 7]), array([ 6114, 6115, 6116, ..., 18218, 18219, 18220]))第5份训练集图片数量为:16183,测试集图片数量为:4045(array([ 0,1,2, ..., 18218, 18219, 18220]), array([ 8152, 8153, 8154, ..., 5, 6, 7]))

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图片的数量,总数为: 8

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, ..., 5, 6, 7]), array([ 0,1,2, ..., 12195, 12196, 12197]))第2份训练集图片数量为:16182,测试集图片数量为:4046(array([ 0,1,2, ..., 5, 6, 7]), array([ 2038, 2039, 2040, ..., 14203, 14204, 14205]))第3份训练集图片数量为:16182,测试集图片数量为:4046(array([ 0,1,2, ..., 5, 6, 7]), array([ 4076, 4077, 4078, ..., 16211, 16212, 16213]))第4份训练集图片数量为:16183,测试集图片数量为:4045(array([ 0,1,2, ..., 5, 6, 7]), array([ 6114, 6115, 6116, ..., 18218, 18219, 18220]))第5份训练集图片数量为:16183,测试集图片数量为:4045(array([ 0,1,2, ..., 18218, 18219, 18220]), array([ 8152, 8153, 8154, ..., 5, 6, 7]))

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图片的数量,总数为: 8

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')

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