我遇到了ValueError: could not broadcast input array from shape (90742,1) into shape (240742,1).
这是我的代码:
# shift train predictions for plotting
train_predict_plot = np.empty_like(data)
train_predict_plot[:, :] np.nan
train_predict_plot[lags:len(train_predict)+lags, :] = train_predict
# shift test predictions for plotting
test_predict_plot = np.empty_like(data)
test_predict_plot[:, :] = np.nan
test_predict_plot[len(train_predict) + (lags * 2)+1:len(data)-1, :] = test_predict
# plot observation and predictions
plt.plot(data, label='Observed', color='#006699');
plt.plot(train_predict_plot, label='Prediction for Train Set', color='#006699', alpha=0.5);
plt.plot(test_predict_plot, label='Prediction for Test Set', color='#ff0066');
plt.legend(loc='upper left')
plt.title('LSTM Recurrent Neural Net')
plt.show()
这是错误:
我看了前面的问题,但它们都是不同的。有人可以告诉我如何针对我的情况具体解决此问题吗?非常感谢。
答案 0 :(得分:0)
因此,您的test_predict.shape
必须为(90742,1)
,因为此处输入了test_predict_plot[240742,:]=test_predict
,因此您正面临错误。
test_predict_plot[75003:315745,:]
的形状变为(240742,1)
,并输入比这会引发错误的形状更短或更不同的数组。
我尝试通过运行您提供的链接中提供的代码来重现该错误,但没有出现以下错误:
len(train_predict)=116
,len(data)=144
和len(test_predict)=20
,它们与代码的计算非常吻合。通过计算,我的意思是这段代码:
test_predict_plot[len(train_predict)+(lags*2)+1:len(data)-1, :] = test_predict
它将变为:
test_predict_plot[116+6+1:144-1, :] = test_predict
因此,您需要对代码进行更改,以使输入的长度匹配。 您也可以尝试通过以下代码更改:
test_predict_plot[<len(test_predict)>, :] = test_predict
解决方案
发现问题:
train = dataset[150000:225000, :]
test = dataset[225000:, :]
您需要在此处进行更改:
train_predict_plot = np.empty_like(data[150000:, :])
train_predict_plot[:, :] = np.nan
train_predict_plot[lags: len(train_predict) + lags, :] = train_predict
# shift test predictions for plotting
test_predict_plot = np.empty_like(data[150000:, :])
test_predict_plot[:, :] = np.nan
test_predict_plot[len(train_predict)+(lags*2)+1:len(data[150000:, :])-1, :] = test_predict