Python如何实现拆分数据集为训练集与测试集

陆景行
陆景行
发布时间:2026-10-11 | 3人浏览过
原创

在模型训练前,通常需要将数据集划分为训练集和测试集。本文详解了如何使用 Pandas 精准提取自变量 X 和因变量 y,并结合 scikit-learn 的 train_test_split 函数,通过调整 test_size 与 random_state 参数,高效实现按比例的数据拆分。

明确数据划分的核心逻辑

拆分数据集的本质是将原始数据分为两部分:一部分用于模型学习(训练集),另一部分用于检验模型泛化能力(测试集)。实际操作中,这包含两个关键步骤:首先从 DataFrame 中提取自变量矩阵 X 和因变量向量 y,随后利用工具函数将其按比例切分。

精准提取特征与标签(确定 X 和 y)

在进行拆分前,必须先分离特征和标签。以下是几种常用的 Pandas 筛选方式:

第 1 步:根据列名排除法提取

直接指定需要排除的标签列来生成 X,同时单独提取对应的 y,这是最直观且不易出错的方法:

import pandas as pd

df = pd.read_csv('splitfeatures.csv')
# 删除 is_buy 列得到特征 X
X = df.drop(['is_buy'], axis=1)
# 单独提取目标值 y
y = df['is_buy']

第 2 步:使用 iloc 定位索引数据

当列顺序固定或需要根据绝对位置提取时,可以使用位置切片:

# 提取第 0, 1, 2, 4 列作为 X,第 3 列作为 y
X = df.iloc[:, [0, 1, 2, 4]]
y = df.iloc[:, [3]]

使用Pandas查看CSV数据的表头和内容示例
通过 head() 查看数据预览,确认各列名称以便准确提取

第 3 步:基于列属性动态过滤

如果不想手动数索引号,可以利用布尔索引直接过滤列:

# 过滤掉 'is_buy' 列
X = df.loc[:, df.columns != 'is_buy']
y = df.loc[:, df.columns == 'is_buy']

使用 scikit-learn 执行数据拆分

获取 X 和 y 后,推荐使用业界标准的 train_test_split 函数。它支持按比例自动划分,并可通过随机种子保证每次运行结果一致,这对复现算法实验至关重要。

from sklearn.model_selection import train_test_split

# test_size=0.2 表示测试集占 20%,随机种子设为 1234
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=1234
)

完整实战:鸢尾花数据集拆分

下面提供一个从零开始的连贯案例,使用内置的鸢尾花(Iris)数据集演示加载、拆分与基础验证流程。

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 1. 加载数据集
iris = load_iris()
X = iris.data  # 花瓣和花萼尺寸特征
y = iris.target  # 品种标签

# 2. 执行拆分 (80%训练, 20%测试)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 3. 验证拆分结果长度
print(f"训练集样本数: {len(X_train)}, 测试集样本数: {len(X_test)}")

# 4. 模拟模型训练(以通用算法为例)
# model.fit(X_train, y_train) 
# accuracy = model.score(X_test, y_test)
# print(f"模型准确率: {accuracy}")

要点总结

数据集拆分是机器学习预处理的标准环节。掌握 Pandas 的数据提取技巧能有效避免索引错位,而合理配置 train_test_split 的 test_size 比例与 random_state 能够显著提升实验的稳定性和可比性。以上就是利用 Python 拆分训练集和测试集的详细内容,更多关于机器学习数据处理的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表