Scikit-learn中train_test_split如何具体操作来划分训练集与测试集?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1008个文字,预计阅读时间需要5分钟。
基本原因通常是没有设置random_state,或者错误地将test_size当作绝对数量使用。它默认按比例划分示例,例如test_size=0.2表示取20%的样本,而不是固定的20%。若传入整数(如test_size=100),则仅当数据量超过100且你知道总量时才安全。
常见错误现象:ValueError: test_size must be less than the number of samples,就是传了比总样本还大的整数。
- 训练集/测试集划分前务必确认
X和y行数一致,否则会静默错位 - 分类任务中,加
stratify=y能保持各类别在两集中比例一致,不加可能某类在测试集里全没了 -
shuffle=True是默认值,但如果你的数据本身有序(比如按时间或类别排),不 shuffle 就会导致训练集全是前半段、测试集全是后半段,模型根本学不到泛化能力
train_test_split 返回的四个变量顺序不能乱
它固定返回 X_train, X_test, y_train, y_test 这四个,顺序不能靠名字猜,也不能只接两个变量想着“反正前两个是 X”。少接或错序会导致后续 fit() 报 ValueError: Expected 2D array, got 1D array instead 这类难以定位的错。
本文共计1008个文字,预计阅读时间需要5分钟。
基本原因通常是没有设置random_state,或者错误地将test_size当作绝对数量使用。它默认按比例划分示例,例如test_size=0.2表示取20%的样本,而不是固定的20%。若传入整数(如test_size=100),则仅当数据量超过100且你知道总量时才安全。
常见错误现象:ValueError: test_size must be less than the number of samples,就是传了比总样本还大的整数。
- 训练集/测试集划分前务必确认
X和y行数一致,否则会静默错位 - 分类任务中,加
stratify=y能保持各类别在两集中比例一致,不加可能某类在测试集里全没了 -
shuffle=True是默认值,但如果你的数据本身有序(比如按时间或类别排),不 shuffle 就会导致训练集全是前半段、测试集全是后半段,模型根本学不到泛化能力
train_test_split 返回的四个变量顺序不能乱
它固定返回 X_train, X_test, y_train, y_test 这四个,顺序不能靠名字猜,也不能只接两个变量想着“反正前两个是 X”。少接或错序会导致后续 fit() 报 ValueError: Expected 2D array, got 1D array instead 这类难以定位的错。

