如何使用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
带有洗牌的拆分
-
此示例显示了启用洗牌的训练测试拆分。 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()的灵活性使其能够适应各种情境,成为任何数据科学家或机器学习实践者工具库中不可或缺的工具。通过掌握如何巧妙地使用这个函数,