-1
我想将图像数据集分为两部分,即训练和测试集。我想将训练和测试之间的数据分成80/20。我需要从所有类别的图像中提取80%,并且还需要从所有类别的图像中提取剩余的20%图像。如何混洗图像以用于培训和测试
这是目前我如何将数据拆分为两个,但它不能正常工作。
image_filenames = glob.glob("./imagenet-dogs/n02*/*.jpg")
image_filenames[0:2]
training_dataset = defaultdict(list)
testing_dataset = defaultdict(list)
image_filename_with_breed = map(lambda filename: (filename.split("/")[2], filename), image_filenames)
for dog_breed, breed_images in groupby(image_filename_with_breed, lambda x: x[0]):
"""
Append training/testing image datasets to respective dictionaries
"""
# Enumerate each breed's image and send ~20% of the images to a testing set
for i, breed_image in enumerate(breed_images):
if i % 5 == 0:
testing_dataset[dog_breed].append(breed_image[1])
else:
training_dataset[dog_breed].append(breed_image[1])
我在做什么错误,以及如何确保图像是从所有类中获取的最佳方法是什么?
会洗牌的图像,然后采取80%,将其附加到培训,然后采取其余的20%,并将其附加到测试工作?如果是这样,那么最好的方法是什么?
不要重新发明轮子。 scikit-learn是Python中ML实用程序的实际库。例如,它内置了'train_test_split_'。 –