将jaffe划分为训练集,验证集和测试集的代码
时间: 2023-10-08 08:09:00 浏览: 90
以下是将jaffe数据集按照7:1:2的比例划分为训练集、验证集和测试集的Python代码:
```python
import os
import shutil
import random
# jaffe数据集所在的目录
data_dir = '/path/to/jaffe'
# 划分后数据集保存的目录
output_dir = '/path/to/output'
# 按照7:1:2的比例划分为训练集、验证集和测试集
train_ratio = 0.7
val_ratio = 0.1
test_ratio = 0.2
# 图片文件的后缀名
exts = ['.tiff']
# 将jaffe数据集按照类别划分为子目录
classes = ['AN', 'DI', 'FE', 'HA', 'NE', 'SA', 'SU']
for cls in classes:
os.makedirs(os.path.join(output_dir, 'train', cls))
os.makedirs(os.path.join(output_dir, 'val', cls))
os.makedirs(os.path.join(output_dir, 'test', cls))
# 遍历jaffe数据集目录下的所有图片文件,将其随机划分为训练集、验证集和测试集
for ext in exts:
files = [os.path.join(data_dir, f) for f in os.listdir(data_dir) if f.endswith(ext)]
random.shuffle(files)
num_train = int(train_ratio * len(files))
num_val = int(val_ratio * len(files))
num_test = len(files) - num_train - num_val
# 将训练集图片复制到对应的子目录
for i in range(num_train):
cls = os.path.basename(files[i])[3:5]
shutil.copy(files[i], os.path.join(output_dir, 'train', cls))
# 将验证集图片复制到对应的子目录
for i in range(num_train, num_train+num_val):
cls = os.path.basename(files[i])[3:5]
shutil.copy(files[i], os.path.join(output_dir, 'val', cls))
# 将测试集图片复制到对应的子目录
for i in range(num_train+num_val, len(files)):
cls = os.path.basename(files[i])[3:5]
shutil.copy(files[i], os.path.join(output_dir, 'test', cls))
```
您可以根据需要修改代码中的数据集路径、划分比例和保存路径。
阅读全文