「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。 散布図
https://github.com/AileenNielsen/TimeSeriesAnalysisWithPython/blob/master/data/AirPassengers.csv
url = 'https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv' from urllib import request request.urlretrieve(url, './work/AirPassengers.csv')
df = pd.read_csv('./work/AirPassengers.csv')
df.head()
df.tail()
df.columns = ['Month', 'Passengers']
plt.plot(df['Passengers']) plt.xticks(np.arange(0, 145, 12)) plt.grid() plt.show()
from statsmodels.tsa.seasonal import seasonal_decompose sd = seasonal_decompose(df['Passengers'].values, period=12) # periodで周期を指定 sd.plot() plt.show()
data = df['Passengers'].values.astype('f') scale = data.max() data /= scale
x = data[:-1] y = data[1:] print('x:',len(x)) print('y:', len(y))
print('x:', np.shape(x), ' y:', np.shape(y)) x = x.reshape(len(x), 1, 1) y = y.reshape(len(y), 1) print('x:', np.shape(x), ' y:', np.shape(y))
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 0) print('X_train:', x_train.shape) print('X_test :', x_test.shape) print('y_train:', y_train.shape) print('y_test :', y_test.shape)
model = Sequential() model.add(LSTM(30, batch_input_shape=(None, 1, 1))) # 中間層が30のLSTM model.add(Dense(1)) # 回帰なので最後の出力値は1つ
model.compile(loss='mean_squared_error', optimizer=Adam())
model.summary()
batch_size = 20 n_epoch = 200 hist = model.fit(x_train, y_train, epochs=n_epoch, validation_data=(x_test, y_test), verbose=0, batch_size=batch_size)
y_pred = model.predict(x) plt.plot(data, color='blue') # 実測値 plt.plot(y_pred, color='red') # 予測値 plt.show()
def plot_history_loss(hist): plt.plot(hist.history['loss'],label="loss for training") plt.plot(hist.history['val_loss'],label="loss for validation") plt.title('model loss') plt.xlabel('epoch') plt.ylabel('loss') plt.legend(loc='best') plt.show() plot_history_loss(hist)