使用tensorflow2 对股票的信息进行预测

业余时间学习下深度学习,个人理解就是对已有的数据进行非线性映射,然后再映射的空间内找出数据的特征(个人理解可能不准,请指正)。

源码地址:https://github.com/yu-bo/stock

然后想着找一些数据练习下,网上的教程例子很多,个人想着预测下股票信息,大概的过程如下:

1、使用tushare获取stock信息,

2、对数据进行处理

3、训练和预测 

获取信息:

def getStockInfo(symbol, ts_code, start_time,end_time):
    df_list=[]
    while start_time!= end_time:
        df_t = pro.daily(ts_code=ts_code, start_date=start_time, end_date=end_time)
        df_list.append(df_t)
        end_time = df_t.tail(1)["trade_date"].values[0]

    if len(df_list) != 0:
        data = pd.concat(df_list, join="inner")
    else:
        data =None

    return  data

对数据处理:

 首先读取数据,然后分离出训练数据和预测数据,之后形成序列供模型使用

def getTrainData(stockInfo,only_untrain=False):
    """
    获取单只股票的训练数据
    :param stockInfo: stock 信息
    :param only_untrain: 只使用未训练的数据
    :return: 如果数据不够返回None
    """
    symbol = stockInfo["symbol"]
    path = stock_sql.getFilePath(symbol)
    df=stock_sql.getStockData(path)

    if only_untrain :
        df= parseUntrainedData(symbol,df)
    if len(df) <= SEQUENCE_LEN:
        return None

    # 对数据进行训了测试的分离处理
    x,y = dataProcess(df)
    #形成训练数据
    train_x, scaler_x = dataSequence(x)
    # y只取最后一位
    train_y, scaler_y = dataSequence_y(y)

    return train_x,scaler_x,train_y, scaler_y

建立模型:

我的模型比较简单,后面边学边改,目前也不太知道该怎么改。

def model_1(shape):
    model = keras.Sequential()
    model.add(keras.Input(shape=shape))
    #model.add(keras.layers.Dense(units=100, activation="tanh"))
    model.add(keras.layers.LSTM(units=500, activation='tanh',return_sequences=True))
    model.add(keras.layers.LSTM(units=500, activation='tanh', return_sequences=True))
    model.add(keras.layers.LSTM(units=200,activation='tanh',return_sequences= False))
    model.add(keras.layers.Dense(units=200, activation="tanh"))
    model.add(keras.layers.Dense(units=20, activation="tanh"))
    model.add(keras.layers.Dense(units=1))
    model.compile(optimizer=keras.optimizers.Adam(),
                  loss="mse",
                  metrics=[keras.metrics.mae])
    model.summary()

    return model

下面是一个预测的结果,不是很准确,智能看个大概趋势,有严重的滞后,希望有懂的大神给点指导意见。

使用tensorflow2 对股票的信息进行预测

上一篇:Java输入一个整数,计算它各个位上数字的和。(注意是输入任意整数)


下一篇:Lingo