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

报错Expected 2D array, got 1D array:线性回归预测输入维度问题

解决线性回归预测的形状不匹配问题

问题根源

你的训练数据形状不符合sklearn LinearRegression的要求。当前m是(1,6)的数组,被模型识别为1个样本、6个特征,但实际你需要的是单变量线性回归(1个特征、6个样本),这导致预测时模型错误地要求传入6个特征值。

修正步骤

1. 调整训练数据的形状

将输入特征m和标签c转置,转换为(n_samples, n_features)的标准格式:

import numpy as np
from sklearn.linear_model import LinearRegression

# 转置后形状为(6,1):6个样本,每个样本1个特征
m = np.array([[1,5,3,6,10,20]]).T
# 转置后形状为(6,1):对应6个样本的标签
c = np.array([[100,500,300,600,1000,2000]]).T

model = LinearRegression()
model.fit(m, c)

2. 正确的预测方式

预测时需保证输入为2D数组(形状(n_samples, 1)),以下两种方式都可以:

  • 单个值预测:
    model.predict([[5]])  # 双层括号构造(1,1)的2D数组
    
  • 任意数量值的批量预测:
    # 方式1:手动构造2D数组
    model.predict([[5], [7], [12]])
    
    # 方式2:用reshape自动转换(更便捷)
    input_values = np.array([5, 7, 12])
    model.predict(input_values.reshape(-1, 1))  # reshape(-1,1)自动将1D数组转为(n,1)的2D数组
    

reshape(-1,1)中的-1会让numpy自动计算样本数量,无论你输入多少个单个值,都能转换成模型要求的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:10:25