将数据集中的所有文件夹按照8:2划分为训练集和验证集,并保存在训练集和验证集文件夹中
时间: 2024-04-30 07:22:41 浏览: 7
以下是Python代码示例:
```python
import os
import shutil
import random
# 源数据集路径
dataset_path = "/path/to/dataset"
# 划分后的训练集和验证集路径
train_path = "/path/to/trainset"
val_path = "/path/to/valset"
# 划分比例
split_ratio = 0.8
# 获取数据集中的所有文件夹
folders = os.listdir(dataset_path)
# 对每个文件夹进行划分
for folder in folders:
# 获取文件夹中所有文件
files = os.listdir(os.path.join(dataset_path, folder))
# 随机打乱文件顺序
random.shuffle(files)
# 计算划分点
split_point = int(len(files) * split_ratio)
# 分割训练集和验证集
train_files = files[:split_point]
val_files = files[split_point:]
# 创建训练集和验证集文件夹
os.makedirs(os.path.join(train_path, folder))
os.makedirs(os.path.join(val_path, folder))
# 将训练集和验证集的文件复制到对应的文件夹中
for file in train_files:
src_file = os.path.join(dataset_path, folder, file)
dst_file = os.path.join(train_path, folder, file)
shutil.copy(src_file, dst_file)
for file in val_files:
src_file = os.path.join(dataset_path, folder, file)
dst_file = os.path.join(val_path, folder, file)
shutil.copy(src_file, dst_file)
```
这段代码先获取源数据集中的所有文件夹,然后对每个文件夹进行划分操作。具体操作是先获取文件夹中所有文件,随机打乱文件顺序,然后根据划分比例计算划分点,将文件分割为训练集和验证集。接着创建训练集和验证集文件夹,最后将训练集和验证集的文件复制到对应的文件夹中。