python生成训练集和测试集,原数据以txt给出

源数据:

第二列为id号;

将以txt存储的图片分成train和test集,train和test比例按每个id的总图片数的7:3,实现代码如下所示:
id_a = [] #存放所有的标签号
id_f = [] #存放图片数大于等于20的的标签号
id_num =[]
path = ''
save_train_path = ''
save_val_path = ''
with codecs.open(path,'r') as f:
    lines = f.readlines()
    for line in lines:
        id_a.append(line.split(' ')[1])
    for x in range(1,16241):#标签号为1-16240
        if id_a.count(str(x)) > 19:
            id_f.append(str(x))
            id_num.append(int(id_a.count(str(x)) * 0.7))
bb = {id_f[x]:id_num[x] for x in range(num_id)} #记录放入训练集中每个id的图片个数
cnt = {id_f[x]:0 for x in range(num_id)}#记录每个id已访问到的个数
with codecs.open(save_train_path,'w') as f_train:
    with codecs.open(save_val_path,'w') as f_val:
        with codecs.open(path,'r') as f:
            lines = f.readlines()
            for line in lines:
                kk = line.split(' ')
                len_kk = len(kk)
                if kk[1] in id_f:
                    print('x:' + str(cnt[kk[1]]))
                    cnt[kk[1]] = cnt[kk[1]] + 1
                    print(cnt[kk[1]])
                    if cnt[kk[1]] <=bb[kk[1]]:
                        for j in range(len_kk):
                            f_train.write(kk[j] + ' ')
                    else:
                        for j in range(len_kk):
                            f_val.write(kk[j] + ' ')

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值