Missingness-as-a-Label Signal / repeat_check.py

Mechanism confirmed, baseline not beaten

Raw ⬇ ZIP
 1import json, numpy as np, torch
 2from missingness_signal import seed_all, make_data, train, evaluate
 3
 4def run(mode, data_seed, train_seed, random_mode=False):
 5    x,y,m,q,h=make_data(900,data_seed,'random' if random_mode else 'informative')
 6    xt,yt,mt,qt,ht=make_data(2200,data_seed+100,'random' if random_mode else 'informative')
 7    model,dev=train(x,y,m,mode,500,train_seed)
 8    return evaluate(model,dev,xt,yt,mt,qt)
 9
10out={}
11for setting,rm in [('informative',False),('random',True)]:
12    for mode in ['supervised','detached','joint'] if not rm else ['supervised','joint']:
13        vals=[run(mode, 100+i*11, 200+i*13, rm) for i in range(3)]
14        arr=np.array([[v[0],v[1],v[2]] for v in vals],dtype=float)
15        out[setting+'_'+mode]={'runs':vals,'mean_acc_nll_entropy':arr.mean(axis=0).tolist(),'std_acc_nll_entropy':arr.std(axis=0).tolist()}
16print(json.dumps(out,indent=2))
17with open('repeat_results.json','w') as f: json.dump(out,f,indent=2)