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

如何解决Python线性回归特征两两分组计算MSE的维度不匹配问题

问题报错原因
  • 错误核心是你对双特征切片后做了多余的reshape(-1,1)操作:当你取Xtrain[:,c]时,c是长度为2的组合索引,得到的数组形状本身就是(样本数, 2),完全符合sklearn要求的fit方法输入特征维度要求。你用reshape(-1,1)会把2列特征直接压成1列,样本量翻倍,自然和单输出的ytrain维度不匹配。
修正后完整可运行代码
import numpy as np
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from itertools import combinations

# 生成测试数据
X, y = make_regression(n_samples=100, n_features=4, n_informative=3, n_targets=1, noise=0.01)
# 拆分训练测试集(原代码缺失该步骤,需补充)
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.3, random_state=42)

# 两两特征组合拟合模型计算MSE
for c in combinations(range(4), 2):
    lr = LinearRegression()
    # 去掉多余的reshape操作,直接传入双特征的二维数组即可
    lr.fit(Xtrain[:, c], ytrain)
    yp = lr.predict(Xtest[:, c])
    print(f"特征组合{c}的MSE:", np.sum((ytest - yp)**2) / len(ytest))
补充说明
  • 仅当你需要对单个特征做单变量回归时,才需要用reshape(-1,1)把一维的单特征列转为二维数组;多特征输入只要本身维度是(样本数, 特征数)就可以直接传入。
  • 你也可以直接用sklearn的mean_squared_error工具函数计算MSE,不用手动写计算逻辑:导入from sklearn.metrics import mean_squared_error后,调用mean_squared_error(ytest, yp)即可得到相同结果。

内容的提问来源于stack exchange,提问作者David Sanchez Hommen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:45:03