如何在多元线性回归中处理误差维?

问题描述 投票:0回答:2

我正在尝试使用sklearn进行多元线性回归。

features_2 = ['chronic_disease_binary', 'outcome']

X = df.loc[:, features_2].values
Y = df.loc[:, ['age']].values
# X = pd.get_dummies(X,drop_first=True)
#
X_train_lm, X_test_lm, y_train_lm, y_test_lm = create_dataset_test(X, Y)
X_train_lm = X_train_lm.reshape((2596, -1))
lm = linear_model.LinearRegression()
model = lm.fit(X_train_lm, y_train_lm)
y_pred_lm = lm.predict(X_test_lm)

当我尝试对X_test进行tp预测时,我遇到了这个问题:

[ValueError:matmul:输入操作数1的核心尺寸0不匹配,带有gufunc签名(n?,k),(k,m?)->(n?,m?)(大小2与1不同) )

  • 我的X_train格式如下:
[[-0.77046461  1.29791815]
 [-0.77046461 -0.77046461]
 [-0.77046461  1.29791815]
 ...
 [-0.77046461 -0.77046461]
 [-0.77046461  1.29791815]
 [-0.77046461 -0.77046461]]
  • 我的y_train就像这样:
[[59.]
 [54.]
 [40.]
 ...
 [24.]
 [33.]
 [41.]]

  • 我进行预测的数据具有以下形式:
[[-0.76666002]
 [ 1.30435914]
 [-0.76666002]
 ...
 [-0.76666002]
 [-0.76666002]
 [-0.76666002]]

python scikit-learn regression data-science linear-regression
2个回答
0
投票

尺寸不匹配。

您具有不兼容的尺寸,因为X_test_lm具有N(行数)个样本但是这次,与X_train的形状相比,只有1(列数)个特征/变量。


如果您的X_train为:

[[-0.77046461  1.29791815]
 [-0.77046461 -0.77046461]
 [-0.77046461  1.29791815]
 ...
 [-0.77046461 -0.77046461]
 [-0.77046461  1.29791815]
 [-0.77046461 -0.77046461]]

因此,对具有2个(列数)特征/变量的N个(行数)样本进行模型训练。

然后,当您要求预测以下内容时:

[[-0.76666002]
 [ 1.30435914]
 [-0.76666002]
 ...
 [-0.76666002]
 [-0.76666002]
 [-0.76666002]]

您的维数不兼容,因为X_test_lm再次具有N(行数)个样本但是这次只有1(列数)个特征/变量。

但是,模型的predict函数期望输入形状为[N,2]的数组,您将得到:

ValueError:matmul:输入操作数1的核心不匹配尺寸0,带有gufunc签名(n?,k),(k,m?)->(n?,m?)(尺寸2为不同于1)

[正如您说的,X_test_lm.shape为(1300,1),因此该模型试图预测仅具有一个特征(1)的这1300个样本的值。这就是触发错误的原因。该模型正在使用形状为[N,2] not

[N,1]的X_train进行训练。

因为X_test_lm.shape的值为(1300, 1),这意味着它只有1列,而不是2作为火车数据。在训练数据上训练的beta向量期望具有2列的矩阵,这会产生误差。

您应检查create_dataset_test的定义以了解如何达到此状态。


0
投票

因为X_test_lm.shape的值为(1300, 1),这意味着它只有1列,而不是2作为火车数据。在训练数据上训练的beta向量期望具有2列的矩阵,这会产生误差。

您应检查create_dataset_test的定义以了解如何达到此状态。

© www.soinside.com 2019 - 2024. All rights reserved.