def populate_folds(yes_questions, no_questions, mb_size, verbose=False):
yes_to_pop, no_to_pop = yes_questions[:], no_questions[:]
num_questions = len(yes_questions) + len(no_questions)
min_fold_len = (num_questions - mb_size * GlobalConfigs.NUM_TEST_FOLDS) // GlobalConfigs.NUM_TEST_FOLDS # TODO loosing questions
task_folds = [[] for _ in range(GlobalConfigs.NUM_TEST_FOLDS)]
assert mb_size % 2 == 0 # must be even
# populate
for i in range(GlobalConfigs.NUM_TEST_FOLDS):
while gcd(mb_size, len(task_folds[i])) != mb_size or len(task_folds[i]) < min_fold_len:
task_folds[i].append(yes_to_pop.pop())
task_folds[i].append(no_to_pop.pop())
if verbose:
print('fold {} length: {}'.format(i, len(task_folds[i])))
return task_folds
评论列表
文章目录