资源简介

利用深度学习的长短记忆原理(LSTM)对美国纳斯达克股市进行预测。

资源截图

代码片段和文件信息

import time
import warnings
import numpy as np
from numpy import newaxis
from keras.layers.core import Dense Activation Dropout
from keras.layers.recurrent import LSTM
from keras.models import Sequential
import matplotlib.pyplot as plt


warnings.filterwarnings(“ignore“)

def plot_results_multiple(predicted_data true_data prediction_len):
    fig = plt.figure(facecolor=‘white‘)
    ax = fig.add_subplot(111)
    ax.plot(true_data label=‘True Data‘)
    print ‘yo‘
    #Pad the list of predictions to shift it in the graph to it‘s correct start
    for i data in enumerate(predicted_data):
        padding = [None for p in xrange(i * prediction_len)]
        plt.plot(padding + data label=‘Prediction‘)
        plt.legend()
    plt.show()

def load_data(filename seq_len normalise_window):
    f = open(filename ‘r‘).read()
    data = f.split(‘\n‘)

    sequence_length = seq_len + 1
    result = []
    for index in range(len(data) - sequence_length):
        result.append(data[index: index + sequence_length])
    
    if normalise_window:
        result = normalise_windows(result)

    result = np.array(result)

    row = round(0.9 * result.shape[0])
    train = result[:int(row) :]
    np.random.shuffle(train)
    x_train = train[: :-1]
    y_train = train[: -1]
    x_test = result[int(row): :-1]
    y_test = result[int(row): -1]

    x_train = np.reshape(x_train (x_train.shape[0] x_train.shape[1] 1))
    x_test = np.reshape(x_test (x_test.shape[0] x_test.shape[1] 1))  

    return [x_train y_train x_test y_test]

def normalise_windows(window_data):
    normalised_data = []
    for window in window_data:
        normalised_window = [((float(p) / float(window[0])) - 1) for p in window]
        normalised_data.append(normalised_window)
    return normalised_data

def build_model(layers):
    model = Sequential()

    model.add(LSTM(
        input_dim=layers[0]
        output_dim=layers[1]
        return_sequences=True))
    model.add(Dropout(0.2))

    model.add(LSTM(
        layers[2]
        return_sequences=False))
    model.add(Dropout(0.2))

    model.add(Dense(
        output_dim=layers[3]))
    model.add(Activation(“linear“))

    start = time.time()
    model.compile(loss=“mse“ optimizer=“rmsprop“)
    print “Compilation Time : “ time.time() - start
    return model

def predict_point_by_point(model data):
    #Predict each timestep given the last sequence of true data in effect only predicting 1 step ahead each time
    predicted = model.predict(data)
    predicted = np.reshape(predicted (predicted.size))
    return predicted

def predict_sequence_full(model data window_size):
    #Shift the window by 1 new prediction each time re-run predictions on new window
    curr_frame = data[0]
    predicted = []
    for i in xrange(len(data)):
        predicted.append(model.predict(curr_frame[newaxis::])[00])
        curr_frame = curr_frame[1:]
        curr_frame = np.insert(curr_frame [window_size-1] predicted[-1] a

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-03-02 02:39  How-to-Predict-Stock-Prices-Easily-Demo-master\
     文件        1398  2017-03-02 02:39  How-to-Predict-Stock-Prices-Easily-Demo-master\README.md
     文件        3637  2017-03-02 02:39  How-to-Predict-Stock-Prices-Easily-Demo-master\lstm.py
     文件       48119  2017-03-02 02:39  How-to-Predict-Stock-Prices-Easily-Demo-master\sp500.csv
     文件       62673  2017-03-02 02:39  How-to-Predict-Stock-Prices-Easily-Demo-master\stockdemo.ipynb

评论

共有 条评论