df_sh = gsd.get_code_list_by_classification(classification="上证50成份股")['code'] # print(len(df_sh)) #train dataset fac = [] ret = [] #test dataset facT = [] retT = [] for ishare in df_sh: df = gsd.get_stock_data_daily_df(ishare) num = math.floor(len(df) / days) * days + 1 - days * 2 newfac = gsd.getDataX(df, num=num, days=days) newret = gsd.getDataY(df, num=num, days=days) # if len(newfac)/len(newret) != 5 : # print(ishare) # print(num) # print(len(newfac)) # print(len(newret)) #fac.append(newfac) for i in range(len(newfac)): fac.append(newfac[i]) for i in range(len(newret)): ret.append(newret[i]) # newfacT = gsd.getDataX(df=df,num = math.floor(len(df)/days)*days+1 ) # newretT = gsd.getDataY(df=df,num = math.floor(len(df)/days)*days+1,days = -1 * days ) newfacT = gsd.getDataX(df=df, num=num, days=days) newretT = gsd.getDataY(df=df, num=num, days=days)
days = 5 df_sh = ts.get_sz50s()['code'] #train dataset fac = [] ret = [] #test dataset facT = [] retT = [] for ishare in df_sh: df = gsd.get_stock_data_daily_df(ishare) num = math.floor(len(df) / days) * days + 1 - days * 2 newfac = gsd.getDataX(df, num=num) newret = gsd.getDataY(df, num=num, days=-1 * days) #if len(newfac)/len(newret) != 5 : # print(ishare) # print(num) # print(len(newfac)) # print(len(newret)) #fac.append(newfac) for i in range(len(newfac)): fac.append(newfac[i]) for i in range(len(newret)): ret.append(newret[i]) #print(len(df)) #print(len(fac))
def trainOneByOne(code=[],daysago=365,inited = False): # print(len(df_sh)) #train dataset fac = [] ret = [] #test dataset facT = [] retT = [] for ishare in code: df = gsd.get_stock_data_daily_df_daysago(ishare, daysago) num = math.floor(len(df)/days)*days+1-days*2 newfac = gsd.getDataX(df , num = num , days = days ) newret = gsd.getDataY(df , num = num , days = days ) # if len(newfac)/len(newret) != 5 : # print(ishare) # print(num) # print(len(newfac)) # print(len(newret)) #fac.append(newfac) for i in range(len(newfac)): fac.append(newfac[i]) for i in range(len(newret)): ret.append(newret[i]) # newfacT = gsd.getDataX(df=df,num = math.floor(len(df)/days)*days+1 ) # newretT = gsd.getDataY(df=df,num = math.floor(len(df)/days)*days+1,days = -1 * days ) newfacT = gsd.getDataX(df=df,num = num, days = days ) newretT = gsd.getDataY(df=df,num = num, days = days ) #fac.append(newfac) for i in range(len(newfacT)): facT.append(newfacT[i]) for i in range(len(newretT)): retT.append(newretT[i]) newf = [] newfa = [] for i in range(len(fac)): if((i+1)%days!=0): newf.append(fac[i]) else: newf.append(fac[i]) newfa.append(newf) newf = [] fac = np.array(newfa) ret = np.array(ret) newfT = [] newfaT = [] for i in range(len(facT)): if((i+1)%5!=0): newfT.append(facT[i]) else: newfT.append(facT[i]) newfaT.append(newfT) newfT = [] facT = np.array(newfaT) retT = np.array(retT) # print("**") # print(len(facT)) # print(len(retT)) # print("**") fac = np.array(fac) ret = np.array(ret) learning_rate = 0.001 #Number of images entered into the model batch_size = 10 #training_iters = int(fac.shape[0]/batch_size) #display_step = 10 graph = tf.Graph() with graph.as_default() : # tf Graph input x = tf.placeholder('float',[None, n_steps, n_input]) y = tf.placeholder('float',[None, n_classes]) # # tf Graph input # x = tf.placeholder("float", [None, n_steps, n_input]) # y = tf.placeholder("float", [None, n_classes]) # Define weights weights = { # Hidden layer weights => 2*n_hidden because of forward + backward cells 'out': tf.Variable(tf.random_normal([2*n_hidden, n_classes])) } biases = { 'out': tf.Variable(tf.random_normal([n_classes])) } pred = BiRNN(x, weights, biases) # Define loss and optimizer cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y)) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) # Evaluate model correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1)) accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32)) # Initializing the variables init = tf.global_variables_initializer() saver = tf.train.Saver() # Launch the graph with tf.Session() as sess: sess.run(init) filename = "D:/stockcheckpoint/others/"+code[0]+".ckpt" if os.path.exists(filename+".meta"): saver.restore(sess,filename) print("restored " + filename ) else : filename = "D:/stockcheckpoint/sz50/sz50.ckpt" if os.path.exists(filename+".meta"): saver.restore(sess,filename) print("restored "+ filename) filename = "D:/stockcheckpoint/others/"+code[0]+".ckpt" #step = 1 for step in range(20): for i in range(int(len(fac)/batch_size)): #print(fac.shape) #print(ret.shape) batch_x = fac[i*batch_size:(i+1)*batch_size].reshape([batch_size,n_steps,n_input]) batch_y = ret[i*batch_size:(i+1)*batch_size].reshape([batch_size,n_classes]) #print(batch_x.shape) #print(batch_y.shape) sess.run(optimizer,feed_dict={x:batch_x,y:batch_y}) #if i % display_step ==0: #print(i,'----',(int(len(fac)/batch_size))) #loss, acc = sess.run([cost, accuracy], feed_dict={x: batch_x,y: batch_y}) #print("Iter " + str(step*batch_size) + ", Minibatch Loss= " + "{:.6f}".format(loss) + ", Training Accuracy= " + "{:.5f}".format(acc)) save_path = saver.save(sess,filename) print("%s saved" %save_path ) print("Optimization Finished!") # Calculate accuracy for 128 mnist test images #test_len = 1280 print("Accuracy in data set") test_data = fac[:batch_size].reshape([batch_size,n_steps,n_input]) test_label = ret[:batch_size].reshape([batch_size,n_classes]) Accuracy_in_ds = sess.run(accuracy, feed_dict={x: test_data, y: test_label}) print("Testing Accuracy:", Accuracy_in_ds) #print("Accuracy out of data set") #test_dataT = facT[:batch_size].reshape([batch_size,n_steps,n_input]) #test_labelT = retT[:batch_size].reshape([batch_size,n_classes]) #print("Testing Accuracy:", sess.run(accuracy, feed_dict={x: test_dataT, y: test_labelT})) sess.close() # del x # del y # del weights # del biases # del pred # del cost # del optimizer # del correct_pred # del accuracy # del init # del saver # del sess return Accuracy_in_ds
# df_sh = ts.get_sz50s()['code'] df_sh = gsd.get_code_list_by_classification(classification="上证50成份股")['code'] #df_sh = ['600000'] # print(len(df_sh)) #train dataset fac = np.array([]).reshape(-1,5,32) ret = np.array([]).reshape(-1,3) #test dataset facT = np.array([]).reshape(-1,5,32) retT = np.array([]).reshape(-1,3) for ishare in df_sh: df = gsd.get_stock_data_daily_df(ishare) newfac = gsd.getDataX(df , days = days,pred_days = pred_days ) newret = gsd.getDataY(df , days = days,pred_days = pred_days ) fac = np.append(fac , newfac , axis=0) ret = np.append(ret , newret , axis=0) newfacT = gsd.getDataX(df=df, days = days ,pred_days = pred_days ) newretT = gsd.getDataY(df=df, days = days ,pred_days = pred_days ) facT = np.append(facT , newfacT , axis=0) retT = np.append(retT , newretT , axis=0) fac = np.array(fac) ret = np.array(ret) facT = np.array(facT) retT = np.array(retT)