df.index = range(1994, 2014) df.loc[2014] = None df.loc[2015] = None l = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7'] for i in l: f = GM11(df[i][list(range(1994, 2014))].values)[0] df[i][2014] = f(len(df) - 1) df[i][2015] = f(len(df)) df[i] = df[i].round(2) features = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7'] train = df.loc[list(range(1994, 2014)), features + ['y']].copy() scaler = StandardScaler() train = scaler.fit_transform(train) x_train = train[:, :-1] y_train = train[:, -1] model = Sequential() model.add(Dense(12, input_shape=(6, ))) model.add(Activation('relu')) model.add(Dense(1, input_shape=(12, ))) model.compile(loss='mean_squared_error', optimizer='adam') model.fit(x_train, y_train, epochs=10000, batch_size=16) model.save_weights('1-net.model') x = (df[features] - scaler.mean_[:-1]) / scaler.scale_[:-1] df['y_pred'] = model.predict(x) * scaler.scale_[-1] + scaler.mean_[-1] df[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*']) plt.show()