Scikit-learn中train_test_split如何具体操作来划分训练集与测试集?

2026-04-29 12:203阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1008个文字,预计阅读时间需要5分钟。

Scikit-learn中train_test_split如何具体操作来划分训练集与测试集?

基本原因通常是没有设置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,就是传了比总样本还大的整数。

  • 训练集/测试集划分前务必确认 Xy 行数一致,否则会静默错位
  • 分类任务中,加 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 这类难以定位的错。

阅读全文
标签:AI

本文共计1008个文字,预计阅读时间需要5分钟。

Scikit-learn中train_test_split如何具体操作来划分训练集与测试集?

基本原因通常是没有设置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,就是传了比总样本还大的整数。

  • 训练集/测试集划分前务必确认 Xy 行数一致,否则会静默错位
  • 分类任务中,加 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 这类难以定位的错。

阅读全文
标签:AI