构建线性回归模型遇样本数不匹配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。
直接修复步骤
检查并修正
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))。验证拆分后的形状
运行以下代码确认所有变量形状符合预期: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,)重新训练模型
确认形状正确后,再执行模型训练: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
相关产品推荐
相关产品推荐

