Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- # Multilayer Perceptron to Predict International Airline Passengers (t+1, given t, t-1, t-2)
- import numpy
- import matplotlib.pyplot as plt
- from pandas import read_csv
- import math
- from keras.models import Sequential
- from keras.layers import Dense
- import os
- os.environ["CUDA_VISIBLE_DEVICES"] = ""
- # convert an array of values into a dataset matrix
- def create_dataset(dataset, look_back=3):
- 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)
- # fix random seed for reproducibility
- numpy.random.seed(7)
- # load the dataset
- dataframe = read_csv('international-airline-passengers.csv', usecols=[1], engine='python', skipfooter=3)
- dataset = dataframe.values
- dataset = dataset.astype('float32')
- # split into train and test sets
- train_size = int(len(dataset) * 0.67)
- test_size = len(dataset) - train_size
- train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]
- # reshape dataset
- look_back = 3
- trainX, trainY = create_dataset(train, look_back)
- testX, testY = create_dataset(test, look_back)
- # create and fit Multilayer Perceptron model
- model = Sequential()
- model.add(Dense(14, input_dim=look_back, activation='relu'))
- model.add(Dense(8, activation='relu'))
- model.add(Dense(1))
- model.compile(loss='mean_squared_error', optimizer='adam')
- model.fit(trainX, trainY, epochs=400, batch_size=2, verbose=2)
- # Estimate model performance
- trainScore = model.evaluate(trainX, trainY, verbose=0)
- print('Train Score: %.2f MSE (%.2f RMSE)' % (trainScore, math.sqrt(trainScore)))
- testScore = model.evaluate(testX, testY, verbose=0)
- print('Test Score: %.2f MSE (%.2f RMSE)' % (testScore, math.sqrt(testScore)))
- # generate predictions for training
- trainPredict = model.predict(trainX)
- testPredict = model.predict(testX)
- # shift train predictions for plotting
- trainPredictPlot = numpy.empty_like(dataset)
- trainPredictPlot[:, :] = numpy.nan
- trainPredictPlot[look_back:len(trainPredict)+look_back, :] = trainPredict
- # shift test predictions for plotting
- testPredictPlot = numpy.empty_like(dataset)
- testPredictPlot[:, :] = numpy.nan
- testPredictPlot[len(trainPredict)+(look_back*2)+1:len(dataset)-1, :] = testPredict
- # plot baseline and predictions
- #plt.plot(dataset)
- #plt.plot(trainPredictPlot)
- #plt.plot(testPredictPlot)
- #plt.show()
- fig, ax1 = plt.subplots(figsize=(25, 10))
- # axe 1
- ax1.ticklabel_format(useOffset=False)
- ax1.plot(dataset, label='true_data', color='red')
- ax2 = ax1.twinx()
- ax2.ticklabel_format(useOffset=False)
- ax2.plot(trainPredictPlot)
- ax2.plot(testPredictPlot)
- #ax2.plot(predicted_data, label='Prediction')
- fig.tight_layout()
- plt.savefig('{0}.png'.format('auto'))
- plt.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement