猿问

在 Python 中创建具有随机文件路径的 CSV 文件

我有很多 csv 文件,包括我制作的模拟数据。我通过将所有模拟输出 csv 文件作为文件路径放入另一个单个 csv 文件中,将它们提供给深度学习算法。但是,我需要两个 csv 文件,其中一个包含 20% 的输出 csv 文件路径,另一个包含剩余的 80%。我有一个算法可以做到这一点,但它不是随机的;


with open('C:\\train.csv', 'w') as outf:


  print('x:data,y:label', file=outf)


  for i in range(80):

      print('./1/a_%s.csv, 1' % (i + 21), file=outf)


with open('C:\\test.csv', 'w') as outf:


  print('x:data,y:label', file=outf)


  for i in range(20):

      print('./1/a_%s.csv, 1' % (i + 1), file=outf)

当我这样做时,我在其中一个 csv 文件中获得了 1-20 个文件,在另一个中获得了 21 到 100 个文件。但是,我希望它们是随机的。所以也许如果我总共有 10 个样本,一个文件中有 3 个和 7 个(随机),另一个文件中有其余的。有没有办法做到这一点?


白衣非少年
浏览 253回答 2
2回答

智慧大石

也许您可以尝试制作索引数组并首先对其进行洗牌。然后将前 80 个索引用于第一个 CSV,其余 (20) 个用于第二个:from random import shuffle    indices = list(range(1,101))shuffle(indices)with open('C:\\train.csv', 'w') as outf:    print('x:data,y:label', file=outf)    for i in indices[:80]:        print('./1/a_%s.csv, 1' % i, file=outf)with open('C:\\test.csv', 'w') as outf:    print('x:data,y:label', file=outf)    for i in indices[80:]:        print('./1/a_%s.csv, 1' % i, file=outf)

肥皂起泡泡

这是机器学习中的常见问题。scikit-learn有几个工具可以处理这个问题,例如train_test_splitfrom sklearn.model_selection import train_test_splitindices = list(range(1, 101))i_a, i_b = train_test_split(indices, train_size=0.8, test_size=0.2)现在您可以像原始代码一样迭代i_a(80 个随机索引)和i_b(20 个随机索引):with open('C:\\train.csv', 'w') as outf:    print('x:data,y:label', file=outf)    for i in i_a:        print('./1/a_%s.csv, 1' % i, file=outf)with open('C:\\test.csv', 'w') as outf:    print('x:data,y:label', file=outf)    for i in i_b:        print('./1/a_%s.csv, 1' % i, file=outf)
随时随地看视频慕课网APP

相关分类

Python
我要回答