--- a +++ b/src/ensemble.py @@ -0,0 +1,49 @@ +import os +import pandas as pd +import numpy as np +from dataset import LABEL_COLS + + +if __name__ == '__main__': + target_cols = LABEL_COLS + test_csv = "./csv/patient2_kfold/test.csv" + pred_paths = [ + '/logs/prediction/densenet169-mw-512-resume-0/test_0_ckp_tta.npy', + '/logs/prediction/densenet169-mw-512-resume-1/test_1_ckp_tta.npy', + '/logs/prediction/densenet169-mw-512-resume-2/test_2_ckp_tta.npy', + "/logs/prediction/densenet169-mw-512-resume-3/test_3_ckp_tta.npy", + "/logs/prediction/densenet169-mw-512-resume-4/test_4_ckp_tta.npy" + # '/logs/predictions/se_resnext50_32x4d-mw-512-recheck-0/test_0.npy', + ] + + test_preds = 0 + for pred in pred_paths: + test_preds += np.load(pred) + + test_preds = test_preds / len(pred_paths) + + test_df = pd.read_csv(test_csv) + test_df["sop_instance_uid"] = "ID_" + test_df["sop_instance_uid"] + test_ids = test_df['sop_instance_uid'].values + + ids = [] + labels = [] + for i, id in enumerate(test_ids): + pred = test_preds[i] + for j, target in enumerate(target_cols): + id_target = id + "_" + target + ids.append(id_target) + labels.append(pred[j]) + # if not with_any: + # id_target = id + "_" + "any" + # ids.append(id_target) + # labels.append(pred.max()) + + submission_df = pd.DataFrame({ + 'ID': ids, + 'Label': labels + }) + + os.makedirs(f"/logs/prediction/ensemble/", exist_ok=True) + + submission_df.to_csv(f"/logs/prediction/ensemble/densenet169-mww-512-5folds_tta.csv", index=False)