我是一个能够将我的数据潜入列表目录或测试目录的Python脚本的时刻。我给脚本提供了一个比率,该比例说明了火车/测试之间的比率应该是多少,根据该比率应该随机将文件移动到训练或测试。Python脚本将文件移动到列表目录或测试目录
ex。如果比例= 0.5,那么我的数据集的一半会在列车中,另一半在测试中。
其他前。如果比率= 0.25,那么75%的数据集将在训练中,其余的则在测试中。
但分工似乎错每次..我想单独的84个文件/显示目录和似乎无法砸金42/42分离 - ..任何暗示我能做什么不同?
下面是代码:
import sys
import os
import shutil
import numpy
import random
src = sys.argv[1]
destination_data = sys.argv[2]
src_abs = os.path.abspath(src)
destination_data_abs = os.path.abspath(destination_data)
src_files = os.listdir(src_abs)
def copytree(src, dst, symlinks=False, ignore=None, split=0.5):
for item in os.listdir(src):
s = os.path.join(src, item)
d = os.path.join(dst, item)
d_test = os.path.join(dst, 'test', item)
d_train = os.path.join(dst, 'train', item)
print d_test
print d_train
minmax=0.0, 1.0
rand = random.uniform(*minmax)
print rand
if rand > split:
# Inserted into train
if os.path.isdir(s):
shutil.copytree(s, d_train, symlinks, ignore)
print "Copytree used! - TRAIN"
else:
shutil.copy2(s, d_train)
print "Copy 2 used! - TRAIN"
else:
# Inserted into test
if os.path.isdir(s):
shutil.copytree(s, d_test, symlinks, ignore)
print "Copytree used! - TEST"
else:
shutil.copy2(s, d_test)
print "Copy 2 used! - TEST"
copytree(src_abs,destination_data_abs,True)
正在UNIX机器上执行的代码...如果该事项?
因为你随机做,如果你做了很多很多次,你会得到在中心一个完美的50/50分配,但不是每一次运行会50/50分割。我建议生成一个1s和0s的列表,这是你拥有的文件数量的长度,其中1s和0s的比例由你的'split'决定,然后随机排列列表顺序。 编辑:@ user6770522的答案有更好的执行此。 – perfect5th