将数据集按比例随机划分为训练集、测试集、验证集并生成txt文件
前言
在深度学习中,我们会涉及到将数据集生成txt文件的操作。将数据集生成txt文件有着许多的好处,如下:
1.数据集描述和元数据:txt文件可以包含数据集的描述信息和元数据,如数据来源、数据格式、标签信息等。这有助于记录和维护数据集的相关信息,使其他研究人员能够更容易地理解和使用数据。
2.数据预处理:将数据集保存为txt文件可以是数据预处理的一部分。在这些文件中,你可以进行数据清洗、格式转换、特征提取等操作,以便将数据准备好以供深度学习模型使用。这些预处理步骤可以更轻松地在之后的训练和评估中使用。
3.数据加载和输入:深度学习框架通常提供用于加载数据的工具,这些工具可以从txt文件中读取数据并将其转换为模型可用的格式。将数据集保存为txt文件是为了让深度学习框架能够方便地加载数据并进行训练。这种方式可以帮助确保数据的一致性和可重复性。
4.数据共享和传播:将数据集保存为txt文件使得数据更容易与其他研究人员或团队共享和传播。你可以将数据集文件上传到公共存储库,如GitHub,或通过其他方式分享给需要的人,以促进科研合作和数据共享。
5.数据备份:将数据集保存为txt文件可以作为数据的备份,以防止数据丢失或损坏。数据备份是保护研究成果的一种方式,可以在需要时随时恢复数据。
6.数据分析和可视化:txt文件中的数据可以用于进一步的数据分析和可视化。你可以使用各种工具和编程语言来加载txt文件,并进行数据分析、绘图等操作,以更深入地了解数据的特性。
代码及功能实现
不多说,直接上代码:
import random
import os
# 定义一个空的数据列表用来收集图像的对应路径
data = []
# 指定图像文件夹路径,这个路径是你数据集所在路径
root = "\image"
# 遍历图像文件夹中的文件
for filename in os.listdir(root):
if filename.endswith((".jpg", ".jpeg", ".png")): # 判断是否为图像类型
# 使用PIL库加载图像
image_path = os.path.join(root, filename)
# 将图像路径添加到数据列表
data.append(os.path.basename(image_path)) # 返回对应路径的最后一级目录
# 按比例划分数据集
train_ratio = 0.7 # 训练集比例
test_ratio = 0.2 # 测试集比例
val_ratio = 0.1 # 验证集比例
# 计算划分的数量
total_samples = len(data)
train_samples = int(total_samples * train_ratio)
test_samples = int(total_samples * test_ratio)
val_samples = total_samples - train_samples - test_samples
# 随机打乱数据集
random.shuffle(data)
# 创建保存数据的文件夹
os.makedirs("split_data", exist_ok=True)
# 写入训练数据
# 路径为你要存入文件的路径,一般放在你项目的目录下,如果没有对应目录或文件则会创建出对应目录或文件
with open(r"\train.txt", "w",encoding='UTF-8') as train_file: # 将返回的文件对象赋值给train_file文件,以便后续调用
for item in data[:train_samples]:
train_file.write(item.split('.')[0] + "\n") # 分割操作,只接收图像的名字
# 写入测试数据
# 具体操作与写入训练数据类似
with open(r"\test.txt", "w",encoding='UTF-8') as test_file:
for item in data[train_samples:train_samples + test_samples]:
test_file.write(item.split('.')[0] + "\n")
# 写入验证数据
# 具体操作与写入训练数据类似
with open(r"\val.txt", "w",encoding='UTF-8') as val_file:
for item in data[train_samples + test_samples:]:
val_file.write(item.split('.')[0] + "\n")
print("数据已按比例拆分并保存为train.txt、test.txt和val.txt文件。")
运行结果
运行代码后,结果如下:
可以看到,已经生成了对应的txt文件。
总结
通过自己的学习和努力,通过Python代码实现了数据集按比例随机划分为训练集、测试集、验证集并生成txt文件,我认为这是一件十分有意义的事情,希望以后能够继续努力,不断地提升自己。