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

Scikit-learn线性回归从标量预测向量报错,求解决方法

解决Scikit-learn LinearRegression处理多维输出的问题

问题根源

你的代码报错核心是数据形状不匹配,而非LinearRegression不支持多输出——实际上该模型默认支持多输出预测,只要输入数据符合Scikit-learn的格式要求:

  • 输入特征x需为(n_samples, n_features)格式:每个样本占一行,特征数为列数
  • 输出标签y需为(n_samples, n_outputs)格式:每个样本对应一个多维输出向量,组成二维数组

你的x_train是(1,m)的行向量,会被模型识别为1个样本、m个特征;而y_train是(m,)的向量集合,对应m个样本,两者样本数不匹配,导致报错。

解决步骤

  1. 调整输入特征的形状
    将x_train从(1,m)转置为(m,1),确保每个样本(共m个)对应1个特征:

    # 两种方式任选其一
    x_train = x_train.T  # 转置
    # 或者
    x_train = x_train.reshape(-1, 1)  # 自动调整为(m,1)
    
  2. 确保输出标签为二维数组
    将y_train转换为(m, k)的二维数组(k是输出向量的维度),比如用NumPy转换:

    import numpy as np
    y_train = np.array(y_train)
    

修正后的完整代码

import numpy as np
from sklearn.linear_model import LinearRegression

# 调整输入特征形状
x_train = x_train.reshape(-1, 1)
# 确保输出标签为二维数组
y_train = np.array(y_train)

# 训练模型
lm = LinearRegression()
lm.fit(x_train, y_train)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:10:31