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