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

2024-09-28 05:17:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用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_测试进行预测时遇到了这个问题:

ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2 is different from 1)

  • 我的X_列车有以下表格:
[[-0.77046461  1.29791815]
 [-0.77046461 -0.77046461]
 [-0.77046461  1.29791815]
 ...
 [-0.77046461 -0.77046461]
 [-0.77046461  1.29791815]
 [-0.77046461 -0.77046461]]
  • 我的火车是这样的:
[[59.]
 [54.]
 [40.]
 ...
 [24.]
 [33.]
 [41.]]

  • 我做出预测的数据如下表所示:
[[-0.76666002]
 [ 1.30435914]
 [-0.76666002]
 ...
 [-0.76666002]
 [-0.76666002]
 [-0.76666002]]


Tags: testdfagemodeltrain线性sklearnloc
2条回答

维度不匹配。

您的维度不兼容,因为与X_train的形状相比X_test_lm有N个(行数)样本,但只有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]]

因此,该模型在N个(行数)样本上进行训练,其中包含2个(列数)特征/变量。

然后,当你要求预测

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

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

但是,模型的predict函数要求输入一个具有[N,2]形状的数组,您可以得到:

ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2 is different from 1)

正如您所说,X_test_lm.shape是(1300,1),因此该模型试图预测只有一个特征(1)的这1300个样本的值。这就是引发错误的原因。该模型使用形状为[N,2]而非[N,1]的X_train进行训练


由于X_test_lm.shape的值为(1300, 1),这意味着它只有1列,而不是2列作为列车数据。在经过训练的数据上训练的beta向量需要一个包含2列的矩阵,这就给出了错误

您应该检查create_dataset_test的定义,看看您是如何达到这种状态的

相关问题 更多 >

    热门问题