如何在该场景下正确使用train_test_split进行数据集划分?
解决train_test_split数据集划分的参数问题
我来帮你梳理一下train_test_split的正确用法,顺便修正你代码里的几个小问题:
首先,先明确几个核心要点:
train_test_split的必填参数是你的自变量特征集(通常命名为X)和因变量目标集(通常命名为y)- 你的代码里有两处需要调整:
ix方法已经被pandas弃用,还有你写的返回变量顺序搞反了(正确顺序是X_train, X_test, y_train, y_test)
修正后的完整代码
import pandas as pd # 别忘了导入pandas! from sklearn.model_selection import train_test_split # 读取并预处理数据集 Data1 = pd.read_csv(r"C:\Users\Zihao\Desktop\New\OBSTET.csv", index_col=0) Data1.fillna(0, inplace=True) # 提取因变量(第一列)和自变量(其余列) y = Data1.iloc[:, 0] # 用iloc替代已弃用的ix,索引更稳定 X = Data1.iloc[:, 1:] # 取第2列到最后一列作为自变量特征 # 执行数据集划分 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
关键参数详解
X和y:这两个是必填项,X是所有自变量的特征数据,y是对应的因变量标签,必须保证两者的行数完全匹配。test_size:可选参数,设置测试集占总数据的比例,比如0.2表示20%的数据作为测试集,剩下80%作为训练集;默认值是0.25。random_state:可选参数,设置随机种子,保证每次运行代码时划分的结果完全一致,方便实验复现。你可以填任意整数,比如42是机器学习领域常用的取值。
原代码的问题说明
- 你调用
train_test_split()时没有传入任何参数,它必须至少接收特征集和目标集两个核心参数才能运行。 - 你写的返回变量顺序
X_train, y_train, x_test, y_test不符合函数的返回规则,train_test_split的固定返回顺序是:训练特征集、测试特征集、训练目标集、测试目标集。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

