저는 열차 디렉토리 또는 테스트 디렉토리에 내 데이터를 다이빙 할 수있는 파이썬 스크립트를 만드는 순간입니다. 스크립트에 기차/테스트 간의 비율이 무엇인지 말해주는 비율을 제공합니다.이 비율에 따라 파일을 무작위로 이동하거나 테스트해야합니다.열차 디렉토리 또는 테스트 디렉토리로 파일을 이동하는 Python 스크립트
ex. 비율이 0.5이면 내 데이터 집합의 절반이 기차에 있고 나머지 절반은 테스트에 사용됩니다.
기타 ex. 비율이 0.25이면 75 % 데이터 집합이 열차에 있고 나머지는 테스트에 있습니다.
하지만 부서는 매번 잘못된 것처럼 보입니다. 나는 84 개의 파일/dir을 분리하려고 노력하고 있으며, 황금 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)
이 중요한 경우 코드가 ... 유닉스 시스템에서 실행되고?
당신이 많은, 많은 시간, 당신은 중앙에 완벽한 50/50 분할과 분배를 얻을 것했다면 당신은 무작위로 그 일을하고 있지만 모든 실행이되기 때문에 50/50 분할. 나는 당신이 가지고있는 파일의 길이 인 1과 0의리스트를 생성하고, 'split'에 의해 결정된 1과 0의 비율로리스트 순서를 랜덤화할 것을 제안합니다. 편집 : @ user6770522의 답변이 더 나은 구현을했습니다. – perfect5th