Python从 目录中随机抽取一定比例的图像文件,作为训练集和测试集并新建文件保存
时间: 2023-07-16 20:17:09 浏览: 102
给定比例随机划分训练集、验证集和测试集
可以使用Python中的random和os模块来实现从目录中随机抽取一定比例的图像文件,并将其分别保存到训练集和测试集的新文件夹中。
首先,我们需要导入必要的模块:
```python
import os
import random
import shutil
```
然后,我们可以定义两个变量,分别表示训练集和测试集的比例:
```python
train_ratio = 0.8 # 训练集比例
test_ratio = 0.2 # 测试集比例
```
接下来,假设我们的图像文件都保存在一个名为“images”的目录中,我们可以使用os模块中的listdir函数来获取该目录下的所有文件名,并使用random模块中的shuffle函数将它们随机打乱:
```python
file_names = os.listdir("images")
random.shuffle(file_names)
```
然后,我们可以计算出训练集和测试集应该包含的文件数量:
```python
num_train = int(len(file_names) * train_ratio)
num_test = len(file_names) - num_train
```
接着,我们可以使用os模块中的makedirs函数来创建新的训练集和测试集目录:
```python
os.makedirs("train")
os.makedirs("test")
```
最后,我们可以使用shutil模块中的copy函数将随机选取的图像文件复制到训练集和测试集的新目录中:
```python
for i in range(num_train):
shutil.copy("images/" + file_names[i], "train/" + file_names[i])
for i in range(num_train, num_train + num_test):
shutil.copy("images/" + file_names[i], "test/" + file_names[i])
```
完整代码如下:
```python
import os
import random
import shutil
train_ratio = 0.8 # 训练集比例
test_ratio = 0.2 # 测试集比例
file_names = os.listdir("images")
random.shuffle(file_names)
num_train = int(len(file_names) * train_ratio)
num_test = len(file_names) - num_train
os.makedirs("train")
os.makedirs("test")
for i in range(num_train):
shutil.copy("images/" + file_names[i], "train/" + file_names[i])
for i in range(num_train, num_train + num_test):
shutil.copy("images/" + file_names[i], "test/" + file_names[i])
```
运行完毕后,您将得到一个名为“train”的目录和一个名为“test”的目录,它们分别包含随机选取的训练集和测试集图像文件。
阅读全文