# 定义数据集路径和标签 data_dir = "D:/wjd" # 数据集路径 labels = ['Ag', 'Al', 'Au', 'Cu', 'W', 'V', 'Mo', 'Ta'] # 标签 # 将数据集按照 80% - 20% 的比例划分为训练集和验证集 train_dir = os.path.join(data_dir, 'train') val_dir = os.path.join(data_dir, 'val'),可以给我改一改吗
时间: 2023-08-15 19:06:19 浏览: 1591
当然可以,以下是一个可能的实现,你可以根据自己的需要进行修改:
```python
import os
import shutil
import random
# 定义数据集路径和标签
data_dir = "D:/wjd" # 数据集路径
labels = ['Ag', 'Al', 'Au', 'Cu', 'W', 'V', 'Mo', 'Ta'] # 标签
# 将数据集按照 80% - 20% 的比例划分为训练集和验证集
train_dir = os.path.join(data_dir, 'train')
val_dir = os.path.join(data_dir, 'val')
if not os.path.exists(val_dir):
os.makedirs(train_dir)
os.makedirs(val_dir)
# 遍历每个标签的文件夹
for label in labels:
label_dir = os.path.join(data_dir, label)
images = os.listdir(label_dir)
random.shuffle(images) # 随机打乱图像顺序
# 划分训练集和验证集
split_index = int(0.8 * len(images))
train_images = images[:split_index]
val_images = images[split_index:]
# 将训练集和验证集图像复制到对应的文件夹中
for image in train_images:
src_path = os.path.join(label_dir, image)
dst_path = os.path.join(train_dir, label, image)
os.makedirs(os.path.dirname(dst_path), exist_ok=True) # 确保目标文件夹存在
shutil.copy(src_path, dst_path)
for image in val_images:
src_path = os.path.join(label_dir, image)
dst_path = os.path.join(val_dir, label, image)
os.makedirs(os.path.dirname(dst_path), exist_ok=True) # 确保目标文件夹存在
shutil.copy(src_path, dst_path)
print("数据集已成功划分为训练集和验证集。")
```
这段代码将数据集中的每个类别的图像按照80%-20%的比例划分为训练集和验证集,并将它们复制到对应的文件夹中。请注意,这段代码需要在一个空的目标文件夹中运行,以避免覆盖原始数据集。
阅读全文