Python从 目录下存放猫的图像文件和存放狗的图像文件随机抽取一定比例的图像,作为训练集和测试集并新建文件保存
时间: 2023-11-22 07:55:13 浏览: 23
可以使用Python中的os和random模块来实现从目录下随机抽取一定比例的图像,并将其保存到新建的文件中。
首先,需要导入os和random模块:
```python
import os
import random
```
然后,定义一个函数,用于从目录中随机抽取一定比例的文件,并将其保存到新建的文件中:
```python
def split_data(src_dir, train_dir, test_dir, split_ratio):
"""
从目录中随机抽取一定比例的文件,并将其保存到新建的文件中
:param src_dir: 源目录,存放所有的图像文件
:param train_dir: 训练集目录,用于保存训练集图像文件
:param test_dir: 测试集目录,用于保存测试集图像文件
:param split_ratio: 数据集拆分比例,如0.8表示80%的图像用于训练,20%的图像用于测试
"""
# 判断源目录是否存在
if not os.path.exists(src_dir):
print("源目录不存在!")
return
# 判断训练集目录是否存在,如果不存在则创建
if not os.path.exists(train_dir):
os.makedirs(train_dir)
# 判断测试集目录是否存在,如果不存在则创建
if not os.path.exists(test_dir):
os.makedirs(test_dir)
# 获取源目录中所有的文件名
file_names = os.listdir(src_dir)
# 计算训练集和测试集的文件数量
num_train = int(len(file_names) * split_ratio)
num_test = len(file_names) - num_train
# 随机抽取文件,并将其保存到训练集和测试集目录中
random.shuffle(file_names)
for i in range(num_train):
src_file = os.path.join(src_dir, file_names[i])
dst_file = os.path.join(train_dir, file_names[i])
os.rename(src_file, dst_file)
for i in range(num_train, num_train + num_test):
src_file = os.path.join(src_dir, file_names[i])
dst_file = os.path.join(test_dir, file_names[i])
os.rename(src_file, dst_file)
```
其中,src_dir为源目录,存放所有的图像文件;train_dir为训练集目录,用于保存训练集图像文件;test_dir为测试集目录,用于保存测试集图像文件;split_ratio为数据集拆分比例,如0.8表示80%的图像用于训练,20%的图像用于测试。
最后,可以调用该函数,实现从目录中随机抽取一定比例的图像,并将其保存到新建的文件中:
```python
src_dir = "/path/to/images"
train_dir = "/path/to/train/images"
test_dir = "/path/to/test/images"
split_ratio = 0.8
split_data(src_dir, train_dir, test_dir, split_ratio)
```
其中,src_dir、train_dir和test_dir需要根据实际情况替换为对应的目录路径。