用python实现对1098张数据集划分为训练集和验证集
时间: 2024-01-06 17:05:40 浏览: 77
要实现将1098张数据集划分为训练集和验证集,可以使用Python中的random模块来随机分割数据。以下是一个示例代码:
```python
import os
import random
import shutil
def split_dataset(dataset_path, train_ratio):
# 创建训练集和验证集文件夹
train_path = os.path.join(dataset_path, 'train')
val_path = os.path.join(dataset_path, 'val')
os.makedirs(train_path, exist_ok=True)
os.makedirs(val_path, exist_ok=True)
# 获取所有图像文件的路径
image_files = [file for file in os.listdir(dataset_path) if file.endswith('.jpg')]
# 计算训练集和验证集的样本数量
num_samples = len(image_files)
num_train_samples = int(num_samples * train_ratio)
num_val_samples = num_samples - num_train_samples
# 随机打乱图像文件列表
random.shuffle(image_files)
# 将图像文件分配到训练集和验证集文件夹
train_files = image_files[:num_train_samples]
val_files = image_files[num_train_samples:]
# 复制训练集图像文件到训练集文件夹
for file in train_files:
src = os.path.join(dataset_path, file)
dst = os.path.join(train_path, file)
shutil.copy(src, dst)
# 复制验证集图像文件到验证集文件夹
for file in val_files:
src = os.path.join(dataset_path, file)
dst = os.path.join(val_path, file)
shutil.copy(src, dst)
# 指定数据集文件夹的路径
dataset_path = 'path/to/dataset'
# 指定训练集的比例(0.8表示80%的样本用于训练)
train_ratio = 0.8
# 调用函数划分数据集
split_dataset(dataset_path, train_ratio)
```
在上述代码中,`split_dataset`函数接受两个参数:数据集文件夹的路径和训练集的比例。它首先创建一个新的训练集和验证集文件夹。然后,它获取数据集文件夹中所有以`.jpg`为后缀的图像文件的路径,并随机打乱文件列表。接下来,它根据指定的训练集比例,将图像文件分配到训练集和验证集文件夹中。
请记得将`'path/to/dataset'`替换为实际数据集文件夹的路径,并根据需要调整`train_ratio`参数来设置训练集的比例。
阅读全文