一轮考核的数据集存放在marvel文件夹中,该文件夹中包含以下8个子文件夹: black widow captain america doctor strange hulk ironman loki spider-man thanos 每个文件夹中含有若干张jpg图片,文件夹的名字即为图片里包含的人物。 现在,请将marvel文件夹里的照片按照7:3的比例随机划分成训练集和测试集。
时间: 2023-05-15 13:05:03 浏览: 131
可以使用Python中的os和random模块来实现这个功能。以下是代码示例:
```python
import os
import random
import shutil
# 设置文件夹路径
folder_path = "marvel"
# 设置训练集和测试集的比例
train_ratio = 0.7
test_ratio = 0.3
# 遍历文件夹中的子文件夹
for sub_folder in os.listdir(folder_path):
sub_folder_path = os.path.join(folder_path, sub_folder)
if os.path.isdir(sub_folder_path):
# 获取子文件夹中的所有图片文件
image_files = [f for f in os.listdir(sub_folder_path) if f.endswith(".jpg")]
# 随机打乱图片文件列表
random.shuffle(image_files)
# 计算训练集和测试集的数量
num_train = int(len(image_files) * train_ratio)
num_test = len(image_files) - num_train
# 创建训练集和测试集的文件夹
train_folder = os.path.join(folder_path, "train", sub_folder)
test_folder = os.path.join(folder_path, "test", sub_folder)
os.makedirs(train_folder, exist_ok=True)
os.makedirs(test_folder, exist_ok=True)
# 将图片文件复制到训练集和测试集的文件夹中
for i, image_file in enumerate(image_files):
if i < num_train:
shutil.copy(os.path.join(sub_folder_path, image_file), train_folder)
else:
shutil.copy(os.path.join(sub_folder_path, image_file), test_folder)
```
这段代码会在原始文件夹中创建两个新文件夹"train"和"test",并将按照7:3比例随机划分的图片文件分别复制到这两个文件夹中的对应子文件夹中。
阅读全文