splitfolders.ratio
和 sklearn.model_selection.train_test_split
都用于划分数据集,但它们有一些区别:
-
应用领域:
splitfolders.ratio
主要用于将文件夹中的数据集按照指定的比例划分成不同的子文件夹,通常用于处理图像数据等。这个库的主要目的是将文件分配给不同的目录,以实现数据集的划分。sklearn.model_selection.train_test_split
主要用于划分特征矩阵和标签向量,通常用于处理表格数据、数字特征等。这个函数将数据集划分为训练集和测试集,通常用于监督学习任务。
-
输入数据类型:
splitfolders.ratio
接受文件夹路径作为输入,用于处理文件系统中的数据。sklearn.model_selection.train_test_split
接受 NumPy 数组、Pandas 数据框或其他类似的数据结构,用于处理数据表中的数据。
-
灵活性:
splitfolders.ratio
提供了一种更方便的方法,特别适用于处理文件夹中的数据,同时它会自动创建子文件夹,将数据按比例分配给这些子文件夹。sklearn.model_selection.train_test_split
更加通用,可以用于不同类型的数据,但需要手动组织数据和处理划分后的数据。
1、sklearn.model_selection.train_test_split
该函数通常用于将数据集分为两个部分,即训练集和测试集。这是因为在典型的机器学习和深度学习流程中,通常只有两个主要的数据集部分:训练集用于训练模型,测试集用于评估模型的性能。
要将数据集分为训练集、验证集和测试集三个部分,通常需要进行两次分割。首先,可以使用 train_test_split
函数将数据分成训练集和测试集。然后,从训练集中再次分割出一个验证集。这两次分割分别用于以下目的:
- 第一次分割:将数据分为训练集和测试集。
- 第二次分割:从训练集中再次分割出验证集,用于模型的超参数调整和性能评估。
以下是一个示例代码,演示如何进行两次分割来得到训练集、验证集和测试集:
from sklearn.model_selection import train_test_split
# 先分割数据为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)
# 然后从训练集中再次分割出验证集
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.15, random_state=42)
# 现在,X_train、y_train 是训练集,X_val、y_val 是验证集,X_test、y_test 是测试集
2、splitfolders.ratio
其是一个 Python 库,用于将文件夹中的数据集按照指定的比例划分成训练集、验证集和测试集。它是一个方便的工具,特别适用于处理图像数据等文件系统中的数据集。以下是 splitfolders.ratio
函数的基本用法:
首先,确保已经安装了 splitfolders
库。可以使用以下命令通过 pip 安装:
pip install split-folders
然后,可以使用 splitfolders.ratio
函数来划分数据集。以下是一个示例用法:
import splitfolders
# 指定输入文件夹路径
input_folder = "path/to/your/dataset"
# 指定输出文件夹路径,它将包含划分后的数据子文件夹
output_folder = "path/to/output/dataset"
# 使用 splitfolders.ratio 函数来划分数据集
# ratio 参数指定了划分比例,例如 (0.6, 0.2, 0.2) 表示 60% 训练集,20% 验证集,20% 测试集
splitfolders.ratio(input_folder, output=output_folder, ratio=(0.6, 0.2, 0.2))
上述代码示例将数据集从 input_folder
中按照 60% 训练集,20% 验证集,20% 测试集的比例划分,并将结果保存在 output_folder
中。可以根据自己的需求调整划分比例。划分完成后,output_folder
中将包含三个子文件夹,分别用于训练、验证和测试数据集。