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个样本,两者样本数不匹配,导致报错。
解决步骤
调整输入特征的形状
将x_train从(1,m)转置为(m,1),确保每个样本(共m个)对应1个特征:# 两种方式任选其一 x_train = x_train.T # 转置 # 或者 x_train = x_train.reshape(-1, 1) # 自动调整为(m,1)确保输出标签为二维数组
将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
相关产品推荐
相关产品推荐

