ValueError:无法将输入数组从形状(90742,1)广播到形状(240742,1)

时间:2018-08-08 15:37:24

标签: python time-series lstm

我遇到了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()

这是错误:

ValueError

我看了前面的问题,但它们都是不同的。有人可以告诉我如何针对我的情况具体解决此问题吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

因此,您的test_predict.shape必须为(90742,1),因为此处输入了test_predict_plot[240742,:]=test_predict,因此您正面临错误。

test_predict_plot[75003:315745,:]的形状变为(240742,1),并输入比这会引发错误的形状更短或更不同的数组。

我尝试通过运行您提供的链接中提供的代码来重现该错误,但没有出现以下错误: len(train_predict)=116len(data)=144len(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