【发布时间】:2021-03-10 16:00:41
【问题描述】:
我正在尝试制作预测列表中下一个数字的线性回归模型。因此它创建了一个数组,将 60 个值存储到 x_train,下一个存储到 y_train。然后上移一个,将 60 个值存储到 x_train,下一个存储到 y_train。如此重复,直到完成了 80% 的数据集。拟合函数工作正常,但是当我使用 .predict() 函数和来自数据集的 60 x 值的新列表时,它返回此错误:
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 60 is different from 1) 我认为这来自形状问题。我试图重塑 pred_x 与:pred_x.reshape(60, 1)
但这仍然给出了同样的错误。
我的代码:
training_data_len = math.ceil(len(dataset) * .8)
train_data = dataset[0:training_data_len , :]
print(train_data)
x_train = []
y_train = []
for i in range(60, len(train_data)):
x_train.append(train_data[i-60:i])
y_train.append(train_data[i])
lr = LinearRegression()
nsamples, nx, ny = np.shape(x_train)
x_train = np.reshape(x_train, (nsamples, nx*ny))
lr.fit(x_train, y_train)
len_data = len(df)
pred_x = df[len_data-61:len_data-1]
pred_x = pred_x.values
prediction = lr.predict(pred_x)
print(prediction)
print(df[0])
【问题讨论】:
-
你能发布一个可重现的例子吗?
-
你试过
pred_x.reshape(1,60)吗(我假设60 = nx*ny,但如果有一个可重复的样本来进一步帮助会很有用) -
感谢@piterbarg 以这种方式重塑解决了它。也许今天晚些时候我会发布一个可重现的样本,供其他遇到同样问题的人使用。
-
酷。我将作为答案发布,因此其他人不需要阅读 cmets
标签: python scikit-learn