gpt4 book ai didi

将文件移动到训练目录或测试目录的 Python 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 00:46:44 25 4
gpt4 key购买 nike

我正在制作一个 python 脚本,该脚本能够将我的数据放入训练目录或测试目录中。我为脚本提供了一个比率,它说明了训练/测试之间的比率应该是多少,根据该比率应该随机移动文件以进行训练或测试。

例如。如果比率 = 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 机器上执行……如果这很重要吗?

最佳答案

您可以获取文件列表,打乱它,然后根据分割比例分割它。

import os
import numpy

src_files = os.listdir(".")
n_files = len(src_files)

split_ratio = 0.5
split_index = int(n_files * split_ratio)

numpy.random.shuffle(src_files)

print src_files[0:split_index]
print src_files[split_index:]

Flipping a coin 84 times will result in a "perfect" 42 heads / 42 tails with a probability of 0.0868.

关于将文件移动到训练目录或测试目录的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com