Beispiel #1
0
def predict(code, start, end):
    test_data = cnn_data_generater.generate_predict_data(code, start, end)
    model = cnn.load_model(model_path, code)
    predicted = model.predict(test_data, verbose=1)
    predicted = list(map(lambda n: n[0], predicted))

    data = data_processor.load_data(data_path + str(code) + ".csv", start, end)
    data = data_processor.divide(data, DATA_PERIOD, 0)
    base_price = list(
        map(lambda n: n[DATA_PERIOD - 1],
            list(map(lambda n: n['CLOSE'].tolist(), data))))
    date = list(
        map(
            lambda n: (datetime.strptime(n[DATA_PERIOD - 1], "%Y-%m-%d") +
                       timedelta(days=DATA_DURATION)).strftime("%Y-%m-%d"),
            list(map(lambda n: n['DATE'].tolist(), data))))

    df = pd.DataFrame({
        'date': date,
        'predict': predicted,
        'base_price': base_price
    })
    df.to_csv("result.csv", index=False)
    fig = (df.plot()).get_figure()
    fig.savefig('../figure.png', dpi=600)
Beispiel #2
0
def test(code, start, end):
    test_data = cnn_data_generater.generate_input_data(code, start, end)
    model = cnn.load_model(model_path, code)
    predicted = model.predict(test_data, verbose=1)
    predicted = list(map(lambda n: n[0], predicted))

    data = data_processor.load_data(data_path + str(code) + ".csv", start, end)
    data = data_processor.divide(data, DATA_PERIOD + DATA_DURATION, 1)
    base_price = list(
        map(lambda n: n[DATA_PERIOD - 1],
            list(map(lambda n: n['CLOSE'].tolist(), data))))
    acual_price = list(
        map(lambda n: n[DATA_PERIOD + DATA_DURATION - 1],
            list(map(lambda n: n['CLOSE'].tolist(), data))))
    date = list(
        map(lambda n: n[DATA_PERIOD + DATA_DURATION - 1],
            list(map(lambda n: n['DATE'].tolist(), data))))

    df = pd.DataFrame({
        'date': date,
        'predict': predicted,
        'base_price': base_price,
        'acual_price': acual_price
    })
    df.to_csv("result.csv", index=False)
def generate_output_data(code, start, end):
    data = data_processor.load_data(data_path + str(code) + ".csv", start, end)
    data = data_processor.divide(data, DATA_PERIOD + DATA_DURATION, 1)
    output_data = np.array(
        list(
            map(
                lambda n: n[DATA_PERIOD + DATA_DURATION - 1] / n[DATA_PERIOD -
                                                                 1],
                list(map(lambda n: n['CLOSE'].tolist(),
                         data))))).reshape(len(data), 1)
    return output_data
def generate_input_data(code, start, end):
    data = data_processor.load_data(data_path + str(code) + ".csv", start, end)
    data = data_processor.divide(data, DATA_PERIOD + DATA_DURATION, 1)
    value_data = list(
        map(lambda n: n.loc[:, ['CLOSE', 'OPEN', 'HIGH', 'LOW']].values, data))
    value_data = list(map(lambda n: n[:DATA_PERIOD], value_data))
    value_data = data_processor.normarize2D(np.array(value_data))

    volume_data = list(map(lambda n: n['VOLUME'].tolist(), data))
    volume_data = list(map(lambda n: data_processor.normarize(n), volume_data))

    for i in range(len(value_data)):
        for j in range(len(value_data[i])):
            value_data[i][j].append(volume_data[i][j])

    value_data = np.array(value_data).reshape(len(value_data), DATA_PERIOD, 5)
    return value_data
Beispiel #5
0
import pandas as pd
import numpy as np
from keras.models import model_from_json

import lstm
import data_processor

code = 7203
start = "2014/01/01"
end = "2016/12/31"
data_path = "data/"
result_path = "result/"

DATA_PERIOD = 20

data = data_processor.load_data(data_path + str(code) + ".csv", start, end)
data = data_processor.divide(data_processor.rate(data['CLOSE'].tolist()),
                             DATA_PERIOD + 1)

test_data = np.array(list(map(lambda n: n[:DATA_PERIOD],
                              data))).reshape(len(data), DATA_PERIOD, 1)
print(test_data)
model = lstm.load_model(result_path, code)
predicted = model.predict(test_data, verbose=1)

print(predicted)