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

时间:2021-03-13 09:58:14

标签: lstm

import numpy
import matplotlib.pyplot as plt
from pandas import read_csv
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error

def creat_dataset(dataset,look_back=1):
  dataX,dataY=[],[]
  for i in range(len(dataset)-look_back-1):
    a=dataset[i:(i+look_back),0]
    dataX.append(a)
    dataY.append(dataset[i+look_back,0])
  return numpy.array(dataX),numpy.array(dataY)

numpy.random.seed(7)
dataframe=read_csv('Mappe1.csv',usecols=[1],engine='python')
dataset=dataframe.values
dataset=dataset.astype('float32')

scaler=MinMaxScaler(feature_range=(0,1))
dataset=scaler.fit_transform(dataset)

train_size=int(len(dataset)*0.67)
test_size=len(dataset)-train_size
train,test=dataset[0:train_size,:],dataset[train_size:len(dataset),:]

look_back=1
trainX,trainY=creat_dataset(train,look_back)
testX,testY=creat_dataset(test,look_back)
trainX=numpy.reshape(trainX, (trainX.shape[0],1,trainX.shape[1]))
testX=numpy.reshape(testX,(testX.shape[0],1,test.shape[1]))

model=Sequential()
model.add(LSTM(25,input_shape=(1,look_back)))
model.add(Dense(5))
model.compile(loss='mean_squared_error',optimizer='adam')
model.fit(trainX,trainY,epochs=400,batch_size=1,verbose=2)

trainpredict=model.predict(trainX)
testpredict=model.predict(testX)

trainpredict = scaler.inverse_transform(trainpredict)
trainY = scaler.inverse_transform([trainY])
testpredict = scaler.inverse_transform(testpredict)
testY = scaler.inverse_transform([testY])

trainscore=math.sqrt(mean_squared_error(trainY[0],trainpredict[:,0]))
print('train score:%.2f RMSE'%(trainscore))
testscore=math.sqrt(mean_squared_error(testY[0],testpredict[:,0]))
print('test score:%.2f RMSE'%(testscore))


trainpredictplot=numpy.empty_like(dataset)
trainpredictplot[:,:]=numpy.nan
trainpredictplot[look_back:len(trainpredict)+look_back,:]=trainpredict

testpredictplot=numpy.empty_like(dataset)
testpredictplot[:,:]=numpy.nan
testpredictplot[len(trainpredict)+(look_back*2)+1:len(dataset)-1,:]=testpredict

plt.plot(scaler.inverse_transform(dataset))
plt.plot(trainpredictplot)
plt.plot(testpredictplot)
plt.show()

我想在这个问题上得到帮助 ...ValueError: 无法将输入数组从形状 (126,5) 广播到形状 (126,1) ValueError: 无法将输入数组从形状 (126,5) 广播到形状 ( 126,1) ValueError:无法将输入数组从形状 (126,5) 广播到形状 (126,1) ValueError:无法将输入数组从形状 (126,5) 广播到形状 (126,1) ValueError: 无法将输入数组从形状 (126,5) 广播到形状 (126,1)

0 个答案:

没有答案
相关问题