如何使用 scikit-learn 的 train_test_split() 函数分割数据集
在涉足机器学习和数据科学的广阔领域时,人们会遇到一些看似无关紧要但在更广阔的视角中却至关重要的任务。其中一项重要任务是将数据划分为训练集和验证集 - 这是创建有效预测模型的基础步骤。Scikit-learn 是一个著名的机器学习 Python 库,它拥有一个多功能函数 train_test_split(),可以非常轻松地完成这项任务。本文旨在指导您使用 scikit-learn 的 train_test_split() 函数对数据进行分区的过程。
语法
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X 和 y 分别表示属性矩阵和目标向量。
test_size 表示为验证集预留的初始数据部分(通常为 0.2 或 20%)。
random_state 初始化控制数据的内部随机数生成器分区。
使用 scikit-learn 的 train_test_split() 函数对数据进行切片
此操作可有效简化将数据划分为训练和验证部分的工作。其操作方式如下:
此示例说明了基本的训练-测试分割,测试规模为 20%。
80% 的数据将构成准备集(X_train 和 y_train),而其余 20% 将构成测试集(X_test 和 y_test)。
每个集合中的精确数据点取决于输入数据和随机状态。
a.基本训练-测试分割
X_train、X_test、y_train、y_test = train_test_split(X、y、test_size=0.2)
输出
X_train、X_test、y_train 和 y_test
b. 分层训练-测试分割
此实例展示了分层训练-测试分割。
分层参数可确保训练和测试集中每个类的比例与原始数据集中每个类的比例一致。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y)
输出
X_train, X_test, y_train, and y_test
c. 训练-验证-测试拆分
此实例演示了训练-验证-测试拆分。首先将数据分为准备集(60% 的数据)和临时集(40% 的数据)。
随后将临时集进一步划分为验证集和测试集,每个集包含原始数据的 20%。
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4) X_validation, X_test, y_validation, y_test = train_test_split(X_temp, y_temp, test_size=0.5)
输出
X_train, X_validation, X_test, y_train, y_validation, 和y_test
d. 带混洗的分割
此实例显示启用混洗的训练-测试分割。混洗参数确保在分区之前对数据进行任意混洗。
每组中的数据点将被随机混洗。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=True)
输出
X_train、X_test、y_train 和 y_test
e.使用特定数据子集进行拆分
此实例展示了使用特定随机状态的训练测试拆分。 random_state 参数设置随机数生成器的种子,确保每次执行代码时都会生成相同的训练测试分割。
由于固定的随机状态,每组中的数据点在多次运行中将保持一致。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
输出
X_train、X_test、y_train 和 y_test
结论
scikit-learn 中的 train_test_split() 操作简化了将数据分割为训练集和验证集的任务。这是一个强大的函数,拥有众多参数,可根据任务需求定制分区。
train_test_split() 的灵活性使该函数能够满足不同的环境,使其成为任何数据科学家或机器学习从业者必备的工具。通过掌握如何熟练地使用此功能,