You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建线性回归模型遇样本数不匹配ValueError问题求助

解决LinearRegression训练时的样本数不匹配问题

核心问题定位

你遇到的ValueError: Found input variables with inconsistent numbers of samples: [137, 68],本质是训练集的特征矩阵(X_train)和标签(y_train)样本数量不匹配,而根源几乎都是train_test_split的返回值解包顺序错误。

从你给出的形状来看:X_train是(137,46),y_train是(68,46)——68正好是总样本205减去137的数量(即测试集样本数),这说明你大概率把拆分后的X_test错误赋值给了y_train。


直接修复步骤

  1. 检查并修正train_test_split的解包顺序
    正确的调用和解包格式必须严格对应:

    from sklearn.model_selection import train_test_split
    
    # 正确顺序:X在前,y在后;返回值依次是X_train, X_test, y_train, y_test
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
    

    你之前可能写成了类似X_train, y_train, X_test, y_test = train_test_split(X, y, ...)的错误格式,导致y_train被赋值成了X_test(形状(68,46))。

  2. 验证拆分后的形状
    运行以下代码确认所有变量形状符合预期:

    print("X_train shape:", X_train.shape)  # 预期(137, 46)
    print("y_train shape:", y_train.shape)  # 预期(137,)
    print("X_test shape:", X_test.shape)    # 预期(68, 46)
    print("y_test shape:", y_test.shape)    # 预期(68,)
    
  3. 重新训练模型
    确认形状正确后,再执行模型训练:

    from sklearn.linear_model import LinearRegression
    
    model = LinearRegression()
    model.fit(X_train, y_train)  # 此时样本数匹配,不会报错
    

额外排查点(如果上述方法无效)

  • 确认原始y的格式:确保y是一维数组/Series,而非二维DataFrame。如果是用DataFrame取列,要用y = df['target_column'](返回Series,形状(205,)),而不是y = df[['target_column']](返回DataFrame,形状(205,1))。
  • 检查拆分前的样本一致性:运行assert len(X) == len(y),确保原始X和y的样本数完全一致,没有被误操作删除过样本。

内容的提问来源于stack exchange,提问作者furkansukan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:15:58