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

sklearn LinearRegression拟合数据时报Expected 2D array错误如何解决

报错原因
  • scikit-learn的所有模型fit方法要求输入的特征矩阵X为二维数组,格式为(样本数量, 特征数量)。你当前使用的X是仅包含日期特征的一维序列,格式为(样本数量,),不符合输入要求,因此触发维度报错。
  • 额外的预处理逻辑错误:LabelEncoder是用于分类标签编码的工具,不可用于编码开盘价、最高价、最低价、成交量这类连续数值特征,错误编码会导致后续模型训练结果完全无意义。
修复步骤
  1. 首先修正特征维度问题,选择以下任意一种方式修改即可:
    • 构造X时直接转成二维数组:
    import numpy as np
    # 单特征用reshape(-1,1),-1会自动匹配样本总数
    X = date.reshape(-1, 1)
    
    • 拆分训练测试集后分别调整维度:
    x_train = np.array(x_train).reshape(-1, 1)
    x_test = np.array(x_test).reshape(-1, 1)
    
  2. 修正预处理逻辑,连续数值特征不需要用LabelEncoder编码,直接取原始数值即可,如果需要做特征缩放请使用StandardScaler或MinMaxScaler,示例如下:
# 仅对日期分类特征做LabelEncoder编码
le = sklearn.preprocessing.LabelEncoder()
date = le.fit_transform(list(data["Date"])).reshape(-1, 1)
X = date
# 标签y直接取原始连续数值
y = data[["High", "Low", "Open", "Adj Close", "Volume"]].values

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size=0.1)

修改完成后再执行模型训练代码即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 23:06:07