我正在尝试用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)
[[-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]]
维度不匹配。
您的维度不兼容,因为与
X_train
的形状相比X_test_lm
有N个(行数)样本,但只有1个(列数)特征/变量。详情:
您有一个
X_train
作为:因此,该模型在N个(行数)样本上进行训练,其中包含2个(列数)特征/变量。
然后,当你要求预测
您有不兼容的维度,因为
X_test_lm
再次有N个(行数)样本,但这次只有1个(列数)特征/变量。但是,模型的
predict
函数要求输入一个具有[N,2]形状的数组,您可以得到:正如您所说,
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
的定义,看看您是如何达到这种状态的相关问题 更多 >
编程相关推荐