Download dw_share/graph_model/code/sens.py from Eric-Yyvuw/yeepee-ctr: direct link, hf CLI and curl.
- Browser
- Download file 1.87 kB
-
https://huggingface.co/Eric-Yyvuw/yeepee-ctr/resolve/main/dw_share/graph_model/code/sens.py
- Command line
-
hf download hf://Eric-Yyvuw/yeepee-ctr/dw_share/graph_model/code/sens.py
-
curl -L -o sens.py https://huggingface.co/Eric-Yyvuw/yeepee-ctr/resolve/main/dw_share/graph_model/code/sens.py
1.87 kB
| import sys,os; sys.dont_write_bytecode=True | |
| os.chdir('/workspace/huawei/v21fit'); sys.path.insert(0,'/workspace/huawei/v21fit') | |
| import numpy as np | |
| from lib import * | |
| import addon | |
| from addon import sets,ix,n,ks | |
| from binormal import dp,auc,comb as bcomb | |
| from scipy.optimize import brentq | |
| X=nr(np.load('/workspace/huawei/v21graph/out/graph_eval_merged_rank.npy').astype(np.float64)) | |
| idx=np.random.RandomState(0).choice(len(EN),200000,replace=False) | |
| rho={k:np.corrcoef(X[idx],sets[k][idx])[0,1] for k in ks}; print('rho EN %.4f A %.4f'%(rho['EN'],rho['A'])) | |
| base={'25':.81921,'23':.79903}; offs=[] | |
| for cut,g,w,r in (('25',.00073,.125,.867),('23',.00065,.125,rho['A'])): | |
| a2=brentq(lambda a_: bcomb(base[cut],a_,r,w)-base[cut]-g,.70,.90); offs.append(a2-base[cut]) | |
| off=np.mean(offs); print('offset',off) | |
| P=np.load('post5.npz'); dd,RR=P['d'],P['R']; K=len(dd) | |
| c,g_,q,v8,v5=np.load('pS1.npy') | |
| wS1=np.zeros(n); wS1[0]=1; wS1[1]=-c; wS1[ix['A']]=g_*(1-q); wS1[ix['D']]=g_*q; wS1[ix['v8r']]=v8; wS1[ix['v5']]=v5 | |
| aA=auc(dd[:,ix['A']]); rv=np.array([rho[k] for k in ks]); m=n+1 | |
| def run(shift,ws_list,seed=5): | |
| rs=np.random.RandomState(seed); anew=aA+off+shift+rs.normal(0,.0008,K); D2=np.c_[dd,dp(anew)]; R2=np.zeros((K,m,m)); R2[:,:n,:n]=RR | |
| for t in range(K): | |
| j=np.minimum(rv+rs.normal(0,1,n)*np.where(rv>.99,.0008,.003),.9999); R2[t,n,:n]=j; R2[t,:n,n]=j; R2[t,n,n]=1 | |
| A_=lambda w: auc((D2@w)/np.sqrt(np.einsum('i,nij,j->n',w,R2,w))) | |
| w0=np.r_[wS1,0]; b=A_(w0); out={} | |
| for ws in ws_list: | |
| g=A_(w0+ws*np.eye(m)[n])-b; out[ws]=(g.mean(),*np.percentile(g,[5,95]),(g>0).mean()) | |
| return anew.mean(),out | |
| print('weight | prior shift | graph public AUC prior | gain mean | 5% | 95% | P>0') | |
| for sh in (0,-.005,.005): | |
| am,o=run(sh,(-.02,-.045,-.07)) | |
| for ws,v in o.items(): print('%+.3f | %+.3f | %.5f | %+.6f | %+.6f | %+.6f | %.2f'%(ws,sh,am,*v)) | |