def ai_f_mxWrlst(ftg0,funlst,x_train, y_train): for funSgn in funlst: ftg=ftg0+funSgn+'.pkl' print('\n',ftg) tim0=arrow.now() ai_f_mxWr(ftg,funSgn,x_train, y_train) zt.timNSec('',tim0,True)
def main_get(timStr='', nday=2): # #1---init.sys print('\nmain_get,nday:', nday) tfsys.xnday_down = nday zsys.web_get001txtFg = True # #2---init.tfb rs0 = '/tfbDat/' fgid = rs0 + 'gid2017.dat' xtfb = tft.fb_init(rs0, fgid) if nday == -1: tfsys.xnday_down = xtfb.gid_nday + 10 print('nday,', tfsys.xnday_down) # #3---update.data print('\n#3,update.data') if nday != 0: tft.fb_gid_get_nday(xtfb, timStr, fgExt=True) # #4 tn = zt.timNSec(timStr, xtfb.tim0, '') print('\n#4,update.data,tim:{0:.2f} s'.format(tn))
def ai_mx_tst_bsize(f_mx, f_tg, df_train, df_test, nepochs=500, ksize=32, ky0=5): ds, df = {}, pd.DataFrame() for xc in range(1, 11): print('\n#', xc) dnum = xc * ksize mx = ks.models.load_model(f_mx) t0 = arrow.now() dacc = ai_mul_var_tst(mx, df_train, df_test, nepochs, dnum, ky0=ky0) tn = zt.timNSec('', t0) ds['bsize'], ds['size_acc'], ds['ntim'] = dnum, dacc, tn df = df.append(ds, ignore_index=True) # df = df.dropna() df['bsize'] = df['bsize'].astype(int) print('\ndf') print(df) print('\nf,', f_tg) df.to_csv(f_tg, index=False) # df.plot(kind='bar', x='bsize', y='size_acc', rot=0) df.plot(kind='bar', x='bsize', y='ntim', rot=0) return df
def mx_funlst8mx(mxlst, x_test, y_test,yk0=5,fgInt=False): for msgn in mxlst: #print('@msgn:',msgn) tim0=arrow.now() mx=xmodel[msgn] dacc,df9=mx_fun8mx(mx, x_test, y_test,yk0,fgInt) tn=zt.timNSec('',tim0) xss='ok:{0:.2f}%,mx,{1},tn,{2:.2f} s'.format(dacc,msgn,tn) print(xss)
def main_ai_bt(timStr='', nday=2): # #1---init.sys print('\nmain_bt,nday:', nday) tfsys.xnday_down = nday zsys.web_get001txtFg = True #2---init.tfb rs0 = '/tfbDat/' fgid = rs0 + 'gid2018.dat' xtfb = tft.fb_init(rs0, fgid) if nday == -1: tfsys.xnday_down = xtfb.gid_nday + 10 print('nday,', tfsys.xnday_down) # #3---backtest print('\n#3,backtest') if nday != 0: xtfb.funPre = tfsty.sta00_pre #bt_1dayMain xtfb.funSta = tfsty.sta_ai_log01 xtfb.preVars = [] xtfb.staVars = [99, 99, 99] # # #3.a------ai.init zai.xmodel = {} xtfb.ai_mxfFN0 = rs0 + 'mlib/p7y2016_' xtfb.ai_mx_sgn_lst = ['log'] xtfb.ai_ysgn = 'kwin' xtfb.ai_xlst = [ 'cid', 'pwin0', 'pdraw0', 'plost0', 'pwin9', 'pdraw9', 'plost9' ] # zai.ai_f_mxRdlst(xtfb.ai_mxfFN0, xtfb.ai_mx_sgn_lst) #3.b-------预测 xtfb.kcid = '1' #cn,3=bet365 tfbt.bt_main(xtfb, timStr) # #4---main_ret print('\n#4,result.anz') tfbt.bt_main_ret(xtfb, True) print('kcid,', xtfb.kcid, ',nday,', nday) print('preVar,', xtfb.preVars) print('staVar,', xtfb.staVars) # #5 tn = zt.timNSec('', xtfb.tim0, '') print('\n#5,backtest,tim:{0:.2f} s'.format(tn)) # #6---end.main print('\n#6,end.main')
def main_bt(timStr='',nday=2): # #1---init.sys print('\nmain_bt,nday:',nday) tfsys.xnday_down=nday # zsys.web_get001txtFg= True #2---init.tfb rs0='/tfbDat/' fgid=rs0+'gid2019_js.dat' xtfb=tft.fb_init(rs0,fgid) if nday==-1: tfsys.xnday_down=xtfb.gid_nday+2 print('nday,',tfsys.xnday_down) # #3---backtest print('\n#3,backtest') if nday!=0: xtfb.funPre=tfsty.sta_lstm_pre ##预测算法 xtfb.funSta=tfsty.sta00_sta xtfb.preVars=[] xtfb.staVars=[1.5] xtfb.kcid='1' #cn,3=bet365 # tfbt.bt_main(xtfb,timStr) print('\n#4, 完成预测') #4---main_ret 按预测计算预计回报 #暂时不分析预计回报,以后再开发 ''' print('\n#4,result.anz') tfbt.bt_main_ret(xtfb, True) print('kcid,',xtfb.kcid,',nday,',nday) print('preVar,',xtfb.preVars) print('staVar,',xtfb.staVars) ''' # #5 tn=zt.timNSec('',xtfb.tim0,'') print('\n#5,backtest,tim:{0:.2f} s'.format(tn)) # #6---end.main print('\n#6,end.main')
def mx_mul(mlst, x_test, y_test, yk0=5, fgInt=False, fgDebug=False): #1 print('\ny_pred,预测') df9, xc, mxn9 = x_test.copy(), 0, len(mlst) df9['y_test'] = y_test #2 for msgn in mlst: xc += 1 tim0 = arrow.now() mx = xmodel[msgn] y_pred = mx.predict(x_test.values) #3 if xc == 1: df9['y_sum'] = y_pred else: df9['y_sum'] = df9['y_sum'] + y_pred #4 tn = zt.timNSec('', tim0) df9['y_pred'] = y_pred #4.b if fgInt: df9['y_predsr'] = df9['y_pred'] df9['y_pred'] = round(df9['y_predsr']).astype(int) #5 dacc = ai_acc_xed(df9, yk0, fgDebug) xss = 'y_pred{0:02},kok:{1:.2f}%'.format(xc, dacc) print(xc, xss, msgn, tn, 's') ysgn = 'y_pred' + str(xc) df9[ysgn] = y_pred #6 df9['y_pred'] = df9['y_sum'] / mxn9 if fgInt: df9['y_predsr'] = df9['y_pred'] df9['y_pred'] = round(df9['y_predsr']).astype(int) #7 dacc = ai_acc_xed(df9, yk0, fgDebug) #8 if fgDebug: df9.to_csv('tmp/df9_pred.csv') #9 print('@mx:mx_sum,kok:{0:.2f}%'.format(dacc)) return dacc, df9
# mx.summary() plot_model(mx, to_file='tmp/lstm010mx.png') #4 模型训练 print('\n#4 模型训练 fit') tbCallBack = keras.callbacks.TensorBoard(log_dir=rlog, write_graph=True, write_images=True) tn0 = arrow.now() mx.fit(x_train, y_train, epochs=2000, batch_size=512 * 24, callbacks=[tbCallBack]) tn = zt.timNSec('', tn0, True) mx.save('tmp/lstm010mx.dat') #5 利用模型进行预测 predict print('\n#5 模型预测 predict') tn0 = arrow.now() y_pred = mx.predict(x_test) tn = zt.timNSec('', tn0, True) df_test['y_pred'] = zdat.ds4x(y_pred, df_test.index, True) df_test.to_csv('tmp/df_lstm010mx.csv', index=False) #6 print('\n#6 acc准确度分析') print('\nky0=10') df = df_test dacc, dfx, a10 = ztq.ai_acc_xed2ext(df.y, df.y_pred, ky0=10, fgDebug=True)
import zpd_talib as zta import ztop_ai as zai #----------------------- #1 fsr0 = 'dat/ccpp_' print('#1', fsr0) xlst, ysgn = ['AT', 'V', 'AP', 'RH'], 'PE' x_train, x_test, y_train, y_test = zai.ai_dat_rd(fsr0) funSgn, ftg = 'svm', 'tmp/ccpp_svm.pkl' #2 print('\n#2,mx_svm.wr') tim0 = arrow.now() zai.ai_f_mxWr(ftg, funSgn, x_train, y_train) tn = zt.timNSec('', tim0, True) #3 tim0 = arrow.now() print('\n#3,mx_svm.rd') mx = joblib.load(ftg) tn = zt.timNSec('', tim0, True) #4 print('\n#4,mx_svm') tim0 = arrow.now() zai.mx_fun8mx(mx, x_test, y_test) tn = zt.timNSec('', tim0, True) #----------------------- print('\nok!')
def fun_tim(*args, **kwargs): t0 = arrow.now() result = function(*args, **kwargs) tn = zt.timNSec(arrow.now(), t0) print('tn,{0:.3f}s,fun:{1}'.format(tn, function.__name__)) return result
def mx_funlst(funlst,x_train, x_test, y_train, y_test,yk0=5,fgInt=False): for funsgn in funlst: print('\n',funsgn) tim0=arrow.now() mx_fun010(funsgn,x_train, x_test, y_train, y_test,yk0,fgInt) zt.timNSec('',tim0,True)