能改进一下吗,把划分好的训练集和训练集分别移动到D:\wjd\train和D:\wjd\val这两个文件夹里
时间: 2023-07-04 16:28:30 浏览: 62
当然可以,你可以尝试以下代码:
```
import os
import shutil
# 原始数据集所在路径
data_dir = 'D:/wjd/data'
# 训练集和验证集所在路径
train_dir = 'D:/wjd/train'
val_dir = 'D:/wjd/val'
# 创建训练集和验证集文件夹
os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)
# 遍历每个类别
for label in os.listdir(data_dir):
label_dir = os.path.join(data_dir, label)
# 获取该类别下所有图像文件
images = os.listdir(label_dir)
# 计算分割点
split_point = int(len(images) * 0.8)
# 将前80%的图像移动到训练集文件夹
for image in images[:split_point]:
src_path = os.path.join(label_dir, image)
dst_path = os.path.join(train_dir, image)
shutil.move(src_path, dst_path)
# 将后20%的图像移动到验证集文件夹
for image in images[split_point:]:
src_path = os.path.join(label_dir, image)
dst_path = os.path.join(val_dir, image)
shutil.move(src_path, dst_path)
```
这段代码首先定义了原始数据集所在路径,以及训练集和验证集所在路径。然后创建训练集和验证集文件夹。接下来,遍历每个类别,获取该类别下所有图像文件,并计算分割点。然后,将前80%的图像移动到训练集文件夹中,将后20%的图像移动到验证集文件夹中。最后,使用shutil库中的move函数将图像文件移动到目标路径。
阅读全文