划分数据集代码
时间: 2023-07-09 11:11:42 浏览: 90
以下是使用Python代码对数据集进行划分的示例:
```python
import os
import random
import shutil
# 定义数据集目录路径
dataset_dir = "/path/to/dataset"
# 定义训练集和验证集目录路径
train_dir = "/path/to/train_dir"
val_dir = "/path/to/val_dir"
# 定义训练集和验证集的比例
train_ratio = 0.7
val_ratio = 0.3
# 获取数据集中所有图像的路径和标签
image_paths = []
labels = []
for label in os.listdir(dataset_dir):
label_dir = os.path.join(dataset_dir, label)
for image_name in os.listdir(label_dir):
image_path = os.path.join(label_dir, image_name)
image_paths.append(image_path)
labels.append(label)
# 将数据集中的图像和标签打包成元组
data = list(zip(image_paths, labels))
# 打乱数据
random.shuffle(data)
# 计算训练集和验证集的划分点
train_split_point = int(len(data) * train_ratio)
val_split_point = int(len(data) * (train_ratio + val_ratio))
# 将数据集划分为训练集、验证集和测试集
train_data = data[:train_split_point]
val_data = data[train_split_point:val_split_point]
# 创建训练集和验证集目录
os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)
# 将训练集和验证集的图像文件复制到相应的目录中
for image_path, label in train_data:
label_dir = os.path.join(train_dir, label)
os.makedirs(label_dir, exist_ok=True)
shutil.copy(image_path, label_dir)
for image_path, label in val_data:
label_dir = os.path.join(val_dir, label)
os.makedirs(label_dir, exist_ok=True)
shutil.copy(image_path, label_dir)
```
上述代码首先定义了数据集目录路径、训练集和验证集目录路径,并指定了训练集和验证集的比例。然后,使用os库和shutil库读取数据集中的所有图像文件,并将它们和标签打包成元组,随机打乱数据。接下来,计算训练集和验证集的划分点,并将数据集划分为训练集和验证集。最后,创建训练集和验证集的目录,并将训练集和验证集的图像文件复制到相应的目录中。
阅读全文