コード例 #1
0
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)
コード例 #2
0
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))
コード例 #3
0
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
コード例 #4
0
ファイル: train_sz50.py プロジェクト: piaoxue85/wodedongxi
# 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)