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

为什么scikit-learn多元回归方法输入numpy数组时会触发报错?

报错原因

scikit-learn中所有模型的fit方法对输入特征矩阵X的格式有统一要求:X的形状必须为(样本数量, 特征数量),第一维对应样本数,第二维对应每个样本的特征数。
你当前构造的X形状是(2, 36),系统会判定为只有2个样本,每个样本含36个特征,但你的目标变量y有36个样本,样本数不匹配就触发了该报错。

修复方案

只需要调整特征矩阵X的构造方式,把两个一维特征数组按列拼接,得到形状为(36, 2)的输入矩阵即可,有两种常用实现方式:

方案1:使用np.column_stack按列拼接

import numpy as np
from sklearn import linear_model

x1 = [ 790, 1160,  929,  865, 1140,  929, 1109, 1365, 1112, 1150,  980,
         990, 1112, 1252, 1326, 1330, 1365, 1280, 1119, 1328, 1584, 1428,
        1365, 1415, 1415, 1465, 1490, 1725, 1523, 1705, 1605, 1746, 1235,
        1390, 1405, 1395]
x2 = [1000, 1200, 1000,  900, 1500, 1000, 1400, 1500, 1500, 1600, 1100,
        1300, 1000, 1600, 1600, 1600, 1600, 2200, 1600, 2000, 1600, 2000,
        2100, 1600, 2000, 1500, 2000, 2000, 1600, 2000, 2100, 2000, 1600,
        1600, 1600, 2500]
y = np.array([ 99,  95,  95,  90, 105, 105,  90,  92,  98,  99,  99, 101,  99,
        94,  97,  97,  99, 104, 104, 105,  94,  99,  99,  99,  99, 102,
       104, 114, 109, 114, 115, 117, 104, 108, 109, 120])

# 按列拼接两个特征数组
X = np.column_stack([x1, x2])
regr = linear_model.LinearRegression()
regr.fit(X, y)

# 测试预测
predictedCO2 = regr.predict([[3300, 1300]])

方案2:对原有构造的X做转置

你原来构造的X = np.array([x1, x2])是按行拼接,转置后就可以得到符合要求的形状:

X = np.array([x1, x2]).T

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:48:03