如何使用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, and y_test
b. 分层训练测试分割
此示例展示了一个分层训练测试分割。
stratify参数确保训练集和测试集中的每个类的比例与原始数据集中的每个类的比例相同。
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, and y_test
d. 带洗牌的分割
此示例显示了一个启用了洗牌的训练测试分割。shuffle参数确保在分区之前对数据进行随机洗牌。
每个集合中的数据点将被随机洗牌。
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, and 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, and y_test
结论
来自scikit-learn的`train_test_split()`函数简化了将数据分割成训练集和验证集的任务。这是一个强大的函数,拥有许多参数,可以根据任务需要定制分区。
`train_test_split()` 的灵活性使其能够适应不同的环境,使其成为任何数据科学家或机器学习从业者必备的工具。通过掌握如何熟练地使用此函数,