资源为今年八月份参加天池大数据竞赛a股公司营收预测使用的预处理后的数据和对应的算法文件
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3868151 2018-07-24 05:22 datanew.csv
文件 5279 2018-07-31 09:22 main.py
# -*- encoding:utf-8 -*-
import pandas as pd
import numpy as np
import sys
from keras.layers.core import Dense Activation Dropout
from keras.layers.recurrent import LSTM
from keras.models import Sequential
from sklearn.preprocessing import MinMaxScaler
# 窗口长度
LEN_SEQ = 2
np.random.seed(0)
def load_one(data x):
global LEN_SEQ
#ticker = data.query(“TICKER_SYMBOL==“+str(x)) # 个股
#ticker = data.query(“TICKER_SYMBOL==1 or TICKER_SYMBOL==5“)
ticker =data.loc[data[‘TICKER_SYMBOL‘]==x]
#ticker = data.query(“TICKER_SYMBOL==@x“)
print(‘query the data‘)
#print(ticker)
arr = ticker.ix[:[1234]] # 矩阵
# print(arr)
# 做时序差分
train label = [] []
b_size = 4
for i in range(LEN_SEQ0-1):
train.append(arr.shift(i))
label += [(‘var%d(t-%d)‘ % (j+1i)) for j in range(b_size)]
for i in range(LEN_SEQ):
train.append(arr.shift(-i))
if i ==0:
label += [(‘var%d(t)‘ %(j+1)) for j in range(b_size)]
else:
label += [(‘var%d(t+%d)‘%(j+1i)) for j in range(b_size)]
Train = pd.concat(trainaxis=1)
Train.dropna(inplace=True)
#Train.columns = label
return Train
def build_model():
model = Sequential()
model.add(LSTM(20input_shape=(115)))
model.add(Dense(1))
model.compile(loss=‘mae‘optimizer=‘adam‘)
return model
def predict_point_by_point(model data):
values = data.values
train_Xtrain_y = values[::-1]values[:-1]
#test_Xtest_y = values[::-1]data[:-1]
train_X = train_X.reshape((train_X.shape[0]1train_X.shape[1]))
#test_X = test_X.reshape(test_Xshape[0]LEN_SEQtest_X.shape[1])
LSTM = model.fit(train_Xtrain_yepochs=20batch_size=3)
return model
#在金融的这份数据里,没有2018年q2的数据,也就是t+1的cogs,operateprofit,nincome都没有,无法去预测目标,也就是revenue的值。所以我们需要先对每个单列做出预测,这里我们仍然用lstm对2018q2的这三列预测,再加上向前的三次记录,共十五列来做预测
def create_trainX_trainy(data look_back=1):
trainX trainy = [] []
for i in range(len(data)-look_back-1):
a = data[i:(i+look_back)]
trainX.append(a)
trainy.append(data[i + look_back])
return np.array(trainX) np.array(trainy)
def predict_useone_column(column):
trainXtrainy = create_trainX_trainy(column)
trainX = np.reshape(trainX(trainX.shape[0]1trainX.shape[1]))
model = Sequential()
model.add(LSTM(20input_shape=(11)))
model.add(Dense(1))
model.compile(loss=‘mae‘optimizer=‘adam‘)
model.fit(trainXtrainyepochs=20batch_size=1)
return model
def main():
dic = {}
data = pd.read_csv(“./datanew.csv“ header=0)
data.drop(‘END_DATE‘1inplace=True)
#print(data.head()data.columns)
data.fillna(0.00001inplace=True)
#print(temp.isnull().count())
#temp.fillna(0.000001inplace=True)
# 做minmax
#scaler = MinMaxScaler(feature_range=(01))
#data_scaled = pd.Dataframe(scaler.fit_transform(temp)columns=[‘TICKER_SYMBOL‘‘REVENUE‘‘COGS‘‘OPERATE_PROFIT‘‘N_INCOME
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3868151 2018-07-24 05:22 datanew.csv
文件 5279 2018-07-31 09:22 main.py
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)