Download reports/nnlab/verify/decomp.py from Karar-git/hack4dev-building-age-winners: direct link, hf CLI and curl.
- Browser
- Download file 1.71 kB
-
https://huggingface.co/Karar-git/hack4dev-building-age-winners/resolve/main/reports/nnlab/verify/decomp.py
- Command line
-
hf download hf://Karar-git/hack4dev-building-age-winners/reports/nnlab/verify/decomp.py
-
curl -L -o decomp.py https://huggingface.co/Karar-git/hack4dev-building-age-winners/resolve/main/reports/nnlab/verify/decomp.py
1.71 kB
| import os,sys,json | |
| os.environ["NNLAB_THREADS"]="2"; os.environ["OMP_NUM_THREADS"]="2" | |
| import numpy as np, pandas as pd | |
| sys.path.insert(0,"./tools/nnlab") | |
| import lab | |
| S="./reports/nnlab/scores/" | |
| steps=[("lgbm_upw","rule"),("zs_xgb_dann","rule"),("zs_xgb_dann","rule_smooth"),("ens_e2","rule"),("ens_e4","rule"),("ens_e4","rule_smooth"),("ens_e4__lp","rule"),("ens_e4__lp","rule_smooth")] | |
| tab={} | |
| for m,c in steps: | |
| s=json.load(open(S+m+".json")) | |
| tab[f"{m}:{c}"]=[r[c] for r in sorted(s["draws"],key=lambda r:(r["n"],r["rep"])) if r["n"]==5] | |
| df=pd.DataFrame(tab).T; df.columns=[f"r{i}" for i in range(5)]; df["mean"]=df.mean(1); df["d_prev"]=df["mean"].diff() | |
| pd.set_option("display.width",200); print(df.round(4)) | |
| # own anchor recomputation at n=5 | |
| ams=pd.read_parquet(lab.PROC/"amsterdam_features.parquet",columns=["age_class"]); ya=ams.age_class.to_numpy().astype(int) | |
| ym=pd.read_parquet(lab.PROC/"madrid_features.parquet",columns=["age_class"]).age_class.to_numpy().astype(int) | |
| prior=np.array([(ym==c).mean() for c in (1,2,3,4)]) | |
| def shots(n,rep): | |
| rng=np.random.default_rng(42+1000*n+rep) | |
| return np.concatenate([rng.choice(np.flatnonzero(ya==c),n,replace=False) for c in (1,2,3,4)]) | |
| from sklearn.metrics import f1_score | |
| for m in ("zs_lgbm","lgbm_upw","zs_xgb_dann"): | |
| v=[] | |
| for r in range(5): | |
| P=lab.load_pred(m,5,r); s=shots(5,r); keep=np.setdiff1d(np.arange(len(ya)),s) | |
| v.append(f1_score(ya[keep],lab.W.decide(P[keep],prior),labels=[1,2,3,4],average="macro")) | |
| print(m,"own rule n5:",np.round(v,4),"mean",round(float(np.mean(v)),4)) | |
| # member agreement / zero-shot weight at n=5 | |
| w0=10/15; print("w0 at n=5 =",round(w0,3),"; each shot member weight =",round((1-w0)/4,3)) | |