私は列車のディレクトリまたはテストディレクトリのいずれかに自分のデータをダイビングできるPythonスクリプトを作成しています。スクリプトには、列車/試験の比率がどの程度であるかを示す比率を指定します。それに応じて、ファイルを訓練またはテストのいずれかにランダムに移動する必要があります。ファイルを列車のディレクトリまたはテストのディレクトリに移動するPythonスクリプト
ex。比率が0.5の場合、私のデータセットの半分は列車に、残りの半分はテストになります。
その他ex。比率が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分割。私はあなたのファイルの量の長さである1と0のリストを生成することをお勧めします。あなたの 'split'によって1と0の割合が決定され、次にリストの順序がランダム化されます。 編集:@ user6770522の答えはこれのより良い実装をしています。 – perfect5th