import tensorflow import tflearn import pandas as pd import numpy as np from sklearn.model_selection import train_test_split tensorflow.reset_default_graph() #モデルを初期化 df = pd.read_csv('AirPassengers.csv',usecols=[1]) dataset = df.values dataset = df.astype('float32') dataset = (dataset - np.min(dataset))/(np.max(dataset)-np.min(dataset)) dataset = np.array(dataset) def create_dataset(dataset, steps_of_history, steps_in_future): X, Y = [], [] for i in range(0, len(dataset)-steps_of_history, steps_in_future): X.append(dataset[i:i+steps_of_history]) Y.append(dataset[i + steps_of_history]) X = np.reshape(np.array(X), [-1, steps_of_history, 1]) Y = np.reshape(np.array(Y), [-1, 1]) return X, Y def split_data(x, y, test_size=0.1): pos = round(len(x) * (1 - test_size)) trainX, trainY = x[:pos], y[:pos] testX, testY = x[pos:], y[pos:] return trainX, trainY, testX, testY steps_of_history = 1 steps_in_future = 1 X, Y = create_dataset(dataset, steps_of_history, steps_in_future) trainX, trainY, testX, testY = split_data(X, Y, test_size = 0.33) net = tflearn.input_data(shape=[None, steps_of_history, 1]) net = tflearn.lstm(net, n_units=6) net = tflearn.fully_connected(net, 1, activation='linear') net = tflearn.regression(net, optimizer='adam', learning_rate=0.001, loss='mean_square') model = tflearn.DNN(net, tensorboard_verbose=0) model.fit(trainX, trainY, validation_set=0.1, batch_size=1, n_epoch=150) test_predict = model.predict(testX) rmse = np.sqrt(np.mean((test_predict-testY)**2)) print(rmse)