{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":105399,"databundleVersionId":12733338,"sourceType":"competition"},{"sourceId":12731895,"sourceType":"datasetVersion","datasetId":7902293}],"dockerImageVersionId":31089,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"#### public solutions:\n\n- 0.25580 &nbsp; v.10 - [🧨 Baseline XGBoost](https://www.kaggle.com/code/antonoof/baseline-xgboost/notebook) by expert [Antonoof](https://www.kaggle.com/antonoof)\n- 0.41226 &nbsp; v.01 - [XGBoost Ranker Baseline](https://www.kaggle.com/code/isinsuu/xgboost-ranker-baseline/notebook) by contributor [ışınsu](https://www.kaggle.com/isinsuu)\n- 0.42163 &nbsp; v.09 - [LightGBM Ranker NDCG@3](https://www.kaggle.com/code/quannguyn12/lightgbm-ranker-ndcg-3) by expert [Quan Nguyen](https://www.kaggle.com/quannguyn12)\n- 0.43916 &nbsp; v.11 - [CatBoost Ranker Baseline . FlightRank 2025](https://www.kaggle.com/code/ka1242/catboost-ranker-baseline-flightrank-2025) by expert [Kirill Khoruzhii](https://www.kaggle.com/ka1242)\n- 0.47635 &nbsp; v.11 - [Ensemble with Polars](https://www.kaggle.com/code/quannguyn12/ensemble-with-polars/notebook?scriptVersionId=248160121) by expert [Quan Nguyen](https://www.kaggle.com/quannguyn12)\n- 0.48388 &nbsp; v.05 - [XGBoost Ranker with Polars](https://www.kaggle.com/code/ka1242/xgboost-ranker-with-polars/notebook) by expert [Kirill Khoruzhii](https://www.kaggle.com/ka1242)\n&nbsp;\n\n20-july-2025 - LB = [0.48517](https://www.kaggle.com/code/nina2025/flightrank-2025-aeroclub-recsys-cup-iblend)\n\n&nbsp;\n\n- 0.47635 &nbsp; v.11 - [Ensemble with Polars](https://www.kaggle.com/code/quannguyn12/ensemble-with-polars/notebook?scriptVersionId=248160121) by expert [Quan Nguyen](https://www.kaggle.com/quannguyn12)\n- 0.48388 &nbsp; v.05 - [XGBoost Ranker with Polars](https://www.kaggle.com/code/ka1242/xgboost-ranker-with-polars/notebook) by expert [Kirill Khoruzhii](https://www.kaggle.com/ka1242)\n- 0.48397 &nbsp; v.01 - [XGBoost params test](https://www.kaggle.com/code/isinsuu/xgboost-params-test) by contributor [ışınsu](https://www.kaggle.com/isinsuu)\n- 0.48425 &nbsp; v.05 - [Simple Ensemble](https://www.kaggle.com/code/ducknew/simple-ensemble) by expert [ducknew](https://www.kaggle.com/code/ducknew/simple-ensemble)\n&nbsp;\n\n21-july-2025 - LB = [0.48608](https://www.kaggle.com/code/nina2025/flightrank-2025-aeroclub-recsys-cup-iblend)\n\n&nbsp;\n\n- 0.47635 &nbsp; v.11 - [Ensemble with Polars](https://www.kaggle.com/code/quannguyn12/ensemble-with-polars/notebook?scriptVersionId=248160121) by expert [Quan Nguyen](https://www.kaggle.com/quannguyn12)\n- 0.48388 &nbsp; v.05 - [XGBoost Ranker with Polars](https://www.kaggle.com/code/ka1242/xgboost-ranker-with-polars/notebook) by expert [Kirill Khoruzhii](https://www.kaggle.com/ka1242)\n- 0.48397 &nbsp; v.01 - [XGBoost params test](https://www.kaggle.com/code/isinsuu/xgboost-params-test) by contributor [ışınsu](https://www.kaggle.com/isinsuu)\n- 0.48425 &nbsp; v.05 - [Simple Ensemble](https://www.kaggle.com/code/ducknew/simple-ensemble) by expert [ducknew](https://www.kaggle.com/code/ducknew/simple-ensemble)\n- 0.49343 &nbsp; v.04 - [XGBoost Ranker + Rule-based Rerank](https://www.kaggle.com/code/mango789/xgboost-ranker-rule-based-rerank) by contributor [mango789](https://www.kaggle.com/mango789)\n&nbsp;\n\n26-july-2025 - LB = [0.49423](https://www.kaggle.com/code/nina2025/flightrank-2025-aeroclub-recsys-cup-iblend)\n\n&nbsp;\n\n- 0.48425 &nbsp; v.05 - [Simple Ensemble](https://www.kaggle.com/code/ducknew/simple-ensemble) by expert [ducknew](https://www.kaggle.com/code/ducknew/simple-ensemble)\n- 0.48507 &nbsp; v.12 - [XGBoost params test](https://www.kaggle.com/code/isinsuu/xgboost-params-test) by expert [ışınsu](https://www.kaggle.com/isinsuu)\n- 0.49343 &nbsp; v.04 - [XGBoost Ranker + Rule-based Rerank](https://www.kaggle.com/code/mango789/xgboost-ranker-rule-based-rerank) by contributor [mango789](https://www.kaggle.com/mango789)\n&nbsp;\n\n27-july-2025 - LB = [0.49591](https://www.kaggle.com/code/nina2025/flightrank-2025-aeroclub-recsys-cup-iblend)\n\n&nbsp;\n\n- 0.48425 &nbsp; v.05 - [Simple Ensemble](https://www.kaggle.com/code/ducknew/simple-ensemble) by expert [ducknew](https://www.kaggle.com/code/ducknew/simple-ensemble)\n- 0.48507 &nbsp; v.12 - [XGBoost params test](https://www.kaggle.com/code/isinsuu/xgboost-params-test) by expert [ışınsu](https://www.kaggle.com/isinsuu)\n- 0.49343 &nbsp; v.04 - [XGBoost Ranker + Rule-based Rerank](https://www.kaggle.com/code/mango789/xgboost-ranker-rule-based-rerank) by contributor [mango789](https://www.kaggle.com/mango789)\n- 0.49472 &nbsp; v107 - [flightrankmysol](https://www.kaggle.com/code/gauravparkhedkar/flightrankmysol) by contributor [GAURAV PARKHEDKAR](https://www.kaggle.com/gauravparkhedkar)\n&nbsp;\n- 0.49508 &nbsp; v.03 - [FlightRank - n_folds & Holdout - Single Model](https://www.kaggle.com/code/letemoin/flightrank-n-folds-holdout-single-model/notebook) by expert [Mahmoud Elshahed](https://www.kaggle.com/letemoin)\n&nbsp;\n- 0.49857 &nbsp; v.74 - [getting....](https://www.kaggle.com/code/roxhap/getting) by contributor [Vasu Verma](https://www.kaggle.com/roxhap)\n&nbsp;\n\n11-august-2025 - LB = [?](https://www.kaggle.com/code/nina2025/flightrank-2025-aeroclub-recsys-cup-iblend)\n","metadata":{}},{"cell_type":"code","source":"['0.48425','0.49507', '0.49343', '0.49472', '0.49508', '0.49857']","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# %load_ext cudf.pandas\n\n# RAPIDS cuDF 25.02 cuML 25.02 -> add to UTILITY SCRIPT","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-26T08:40:11.891068Z","iopub.execute_input":"2025-07-26T08:40:11.891355Z","iopub.status.idle":"2025-07-26T08:40:13.914829Z","shell.execute_reply.started":"2025-07-26T08:40:11.891295Z","shell.execute_reply":"2025-07-26T08:40:13.914097Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def iBlend(path_to_ds, file_short_names, sls):\n\n    def tida(sls):\n        \n        def read_subm(sls,i):\n            tnm = sls[\"subm\"][i][\"name\"]\n            FiN = sls[\"path\"] + tnm + \".csv\"\n            df = pd.read_csv(FiN).rename(columns={'target':tnm, sls[\"target\"]:tnm})\n            del df[\"ranker_id\"]\n            return df\n        \n        dfs_subm = [read_subm(sls,i) for i in range(len(sls[\"subm\"]))]\n        \n        df_subms = pd.merge(dfs_subm[0],  dfs_subm[1], on=['Id'])  \n        for i in range(2, len(sls[\"subm\"])): \n            df_subms = pd.merge(df_subms, dfs_subm[i], on=['Id'])\n            \n        cols = [col for col in df_subms.columns if col != \"Id\"]\n        short_name_cols = [c.replace(sls[\"prefix\"], '') for c in cols]\n        corrects = [wt for wt in sls[\"subwts\"]]\n        weights = [subm['weight'] for subm in sls[\"subm\"]]\n        \n        def alls(x, cs=cols):\n            tes = {c: x[c] for c in cs}.items()\n            subms_sorted = [\n              t[0].replace(sls[\"prefix\"], '')\n              for t in sorted(tes,key=lambda k:k[1],reverse=True if sls[\"sort\"]=='desc' else False)]\n            return subms_sorted\n        \n        def correct(x, cs=cols, w=weights, cw=corrects):\n            ic = [x['alls'].index(c) for c in short_name_cols]\n            cS = [x[cols[j]] * (w[j] + cw[ic[j]]) for j in range(len(cols))]\n            return sum(cS)\n        \n        df_subms['alls']        = df_subms.apply(lambda x: alls   (x), axis=1)\n        df_subms[sls[\"target\"]] = df_subms.apply(lambda x: correct(x), axis=1)\n        \n        schema_rename = { old_nc:new_shnc for old_nc, new_shnc in zip(cols, short_name_cols) }\n        \n        df_subms = df_subms.rename(columns=schema_rename)\n        df_subms = df_subms.rename(columns={sls[\"target\"]:\"ensemble\"})\n        \n        df_subms.insert(loc=1, column=' _ ', value=['   '] * sls[\"q_rows\"])\n        \n        df_subms[' _ '] = df_subms[' _ '].astype(str)\n        pd.set_option('display.max_rows',100)\n        pd.set_option('display.float_format', '{:.3f}'.format)\n        vcols = ['Id'] + [' _ '] + short_name_cols + [' _ '] + ['alls'] + [' _ '] + ['ensemble']\n        df_subms = df_subms[vcols]\n        display(df_subms.head(7))\n        pd.set_option('display.float_format', '{:.0f}'.format)\n        df_subms = df_subms.rename(columns={\"ensemble\":sls[\"target\"]})\n        return df_subms\n        \n\n    sample_subm = pd.read_csv(path_to_ds + file_short_names[1] + \".csv\")\n\n    \n    def ensemble_tida(sls,submission=sample_subm):   \n        sls['sort'] = 'desc'\n        dfs = tida(sls)\n        dfD = dfs[['Id', sls['target']]]\n        dfD.to_csv(f'tida_desc.csv', index=False)\n        sls['sort'] = 'asc'\n        dfs = tida(sls)\n        dfA = dfs[['Id', sls['target']]]\n        dfA.to_csv(f'tida_asc.csv',  index=False)\n        target,d,a = sls['target'],sls['desc'],sls['asc']\n        submission[target] = round((dfD[target] * d + a * dfA[target]),0)\n        submission[target] = submission[sls['target']].round().astype(int)\n        return submission\n\n    \n    submission = ensemble_tida(sls)\n\n    \n    return submission","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-26T08:40:17.317696Z","iopub.execute_input":"2025-07-26T08:40:17.318033Z","iopub.status.idle":"2025-07-26T08:40:17.334437Z","shell.execute_reply.started":"2025-07-26T08:40:17.318008Z","shell.execute_reply":"2025-07-26T08:40:17.333293Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Archive\n\n# path_to_ds ='/kaggle/input/20-juli-2025-flightrank/submission '\n\n# file_short_names = ['0.42163','0.43916','0.47635','0.48388']\n\n# params_v5 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.50,\n#       'asc'   : 0.50,\n#       'subwts': [+0.11, +0.04, -0.04, -0.11],                          # LB = 0.48379,  v.5\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.05, },\n#         { 'name':file_short_names[1],'weight':0.08, },\n#         { 'name':file_short_names[2],'weight':0.13, },\n#         { 'name':file_short_names[3],'weight':0.74, },\n#       ]\n#     }\n\n# params_v6 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.21, -0.07, -0.07, -0.07],                          # LB = 0.48443,  v.6\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.10, },\n#         { 'name':file_short_names[1],'weight':0.10, },\n#         { 'name':file_short_names[2],'weight':0.10, },\n#         { 'name':file_short_names[3],'weight':0.70, },\n#       ]\n#     }\n\n# params_v7 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.21, -0.03, -0.07, -0.11],                          # LB = 0.48462,  v.7\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.10, },\n#         { 'name':file_short_names[1],'weight':0.10, },\n#         { 'name':file_short_names[2],'weight':0.10, },\n#         { 'name':file_short_names[3],'weight':0.70, },\n#       ]\n#     }\n\n# params_v8 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.11, -0.01, -0.03, -0.07],                          # LB = 0.48397\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.10, },\n#         { 'name':file_short_names[1],'weight':0.10, },\n#         { 'name':file_short_names[2],'weight':0.10, },\n#         { 'name':file_short_names[3],'weight':0.70, },\n#       ]\n#     }\n\n# params_v9 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.21, -0.02, -0.07, -0.12],                          # LB = 0.48517,  v.10\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.05, },\n#         { 'name':file_short_names[1],'weight':0.08, },\n#         { 'name':file_short_names[2],'weight':0.13, },\n#         { 'name':file_short_names[3],'weight':0.74, },\n#       ]\n#     }","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-19T20:09:33.911941Z","iopub.execute_input":"2025-07-19T20:09:33.912710Z","iopub.status.idle":"2025-07-19T20:09:33.918010Z","shell.execute_reply.started":"2025-07-19T20:09:33.912682Z","shell.execute_reply":"2025-07-19T20:09:33.917158Z"},"_kg_hide-input":true,"_kg_hide-output":true,"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Archive\n\n# file_short_names = ['0.47635','0.48388','0.48397','0.48425']\n\n# path_to_ds ='/kaggle/input/20-juli-2025-flightrank/submission '\n\n\n# params_v12 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.33, -0.11, -0.11, -0.11],                          # LB = 0.48507,  v.12\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.25, },\n#         { 'name':file_short_names[1],'weight':0.25, },\n#         { 'name':file_short_names[2],'weight':0.25, },\n#         { 'name':file_short_names[3],'weight':0.25, },\n#       ]\n#     }\n\n# params_v13 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.33, -0.04, -0.11, -0.18],                          # LB = 0.48452,  v.13\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.25, },\n#         { 'name':file_short_names[1],'weight':0.25, },\n#         { 'name':file_short_names[2],'weight':0.25, },\n#         { 'name':file_short_names[3],'weight':0.25, },\n#       ]\n#     }\n\n# params_v14 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.20,\n#       'asc'   : 0.80,\n#       'subwts': [+0.21, -0.02, -0.07, -0.12],                          # LB = 0.48526,  v.14\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.30, },\n#         { 'name':file_short_names[2],'weight':0.30, },\n#         { 'name':file_short_names[3],'weight':0.10, },\n#       ]\n#     }\n\n# params_v11 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.21, -0.02, -0.07, -0.12],                          # LB = 0.48590,  v.11\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.30, },\n#         { 'name':file_short_names[2],'weight':0.30, },\n#         { 'name':file_short_names[3],'weight':0.10, },\n#       ]\n#     }\n\n# params_v15 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.21, -0.02, -0.07, -0.12],                          # LB = 0.48608,  v.15\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.30, },\n#         { 'name':file_short_names[2],'weight':0.30, },\n#         { 'name':file_short_names[3],'weight':0.10, },\n#       ]\n#     }\n\n# params_v17 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.45,\n#       'asc'   : 0.55,\n#       'subwts': [+0.21, -0.02, -0.07, -0.12],                          # LB = 0.48544,  v.17\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.30, },\n#         { 'name':file_short_names[2],'weight':0.30, },\n#         { 'name':file_short_names[3],'weight':0.10, },\n#       ]\n#     }\n\n# params_v18 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.45,\n#       'asc'   : 0.55,\n#       'subwts': [+0.21, -0.02, -0.07, -0.12],                          # LB = 0.48572,  v.18\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.27, },\n#         { 'name':file_short_names[1],'weight':0.30, },\n#         { 'name':file_short_names[2],'weight':0.30, },\n#         { 'name':file_short_names[3],'weight':0.13, },\n#       ]\n#     }\n\n# params_v19 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.21, -0.02, -0.07, -0.12],                          # LB = 0.48572,      v.19\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.27, },\n#         { 'name':file_short_names[1],'weight':0.33, },\n#         { 'name':file_short_names[2],'weight':0.33, },\n#         { 'name':file_short_names[3],'weight':0.07, },\n#       ]\n#     }\n\n# params_v20 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"dynamic\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.17, -0.02, -0.05, -0.10],                          # LB = 0.48581,      v.20\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.27, },\n#         { 'name':file_short_names[1],'weight':0.33, },\n#         { 'name':file_short_names[2],'weight':0.33, },\n#         { 'name':file_short_names[3],'weight':0.07, },\n#       ]\n#     }\n\n# params_v21 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.20, -0.02, -0.07, -0.11],                          # LB = 0.48608,  v.21 < v.15\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.29, },\n#         { 'name':file_short_names[1],'weight':0.30, },\n#         { 'name':file_short_names[2],'weight':0.30, },\n#         { 'name':file_short_names[3],'weight':0.11, },\n#       ]\n#     }","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-21T14:03:35.699195Z","iopub.execute_input":"2025-07-21T14:03:35.700252Z","iopub.status.idle":"2025-07-21T14:03:35.706143Z","shell.execute_reply.started":"2025-07-21T14:03:35.700211Z","shell.execute_reply":"2025-07-21T14:03:35.705174Z"},"jupyter":{"source_hidden":true},"_kg_hide-input":true,"_kg_hide-output":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Archive\n\n# path_to_ds ='/kaggle/input/20-juli-2025-flightrank/submission '\n\n# file_short_names = ['0.47635','0.48388','0.48397','0.48425','0.49343']\n\n# params_v23 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.17, +0.04, -0.03, -0.07, -0.11],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.12, },\n#         { 'name':file_short_names[1],'weight':0.13, },\n#         { 'name':file_short_names[2],'weight':0.13, },\n#         { 'name':file_short_names[3],'weight':0.04, },\n#         { 'name':file_short_names[4],'weight':0.58, },\n#       ]\n#     }\n\n# params_v24 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.17, +0.04, -0.03, -0.07, -0.11],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.10, },\n#         { 'name':file_short_names[1],'weight':0.10, },\n#         { 'name':file_short_names[2],'weight':0.10, },\n#         { 'name':file_short_names[3],'weight':0.03, },\n#         { 'name':file_short_names[4],'weight':0.67, },\n#       ]\n#     }\n\n# params_v25 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.17, +0.04, -0.03, -0.07, -0.11],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.03, },\n#         { 'name':file_short_names[1],'weight':0.03, },\n#         { 'name':file_short_names[2],'weight':0.03, },\n#         { 'name':file_short_names[3],'weight':0.11, },\n#         { 'name':file_short_names[4],'weight':0.80, },\n#       ]\n#     }\n","metadata":{"trusted":true,"_kg_hide-input":true,"_kg_hide-output":true,"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Archive\n\n# path_to_ds ='/kaggle/input/20-juli-2025-flightrank/submission '\n\n# file_short_names = ['0.48507','0.48425','0.49343']\n\n# params_v26 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.10, -0.03, -0.07],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.10, },\n#         { 'name':file_short_names[1],'weight':0.05, },  # Lb= 0.49315\n#         { 'name':file_short_names[2],'weight':0.85, },\n#       ]\n#     }\n\n# params_v27 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,\n#       'asc'   : 0.70,\n#       'subwts': [+0.10, -0.03, -0.07],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.14, },\n#         { 'name':file_short_names[1],'weight':0.07, },  # Lb= 0.49260\n#         { 'name':file_short_names[2],'weight':0.79, },\n#       ]\n#     }\n\n# params_v30 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.08, -0.02, -0.06],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.20, },  # Lb= 0.49563\n#         { 'name':file_short_names[2],'weight':0.50, },\n#       ]\n#     }\n\n# params_v28 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.10, -0.03, -0.07],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.20, },  # Lb= 0.49560\n#         { 'name':file_short_names[2],'weight':0.50, },\n#       ]\n#     }\n\n# params_v29 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.12, -0.04, -0.08],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.20, },  # Lb= 0.49591       Top.v29\n#         { 'name':file_short_names[2],'weight':0.50, },\n#       ]\n#     }\n\n# params_v31 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.13, -0.045, -0.085],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.31, },\n#         { 'name':file_short_names[1],'weight':0.21, },  # Lb= 0.49481\n#         { 'name':file_short_names[2],'weight':0.48, },\n#       ]\n#     }\n\n# params_v32 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,\n#       'asc'   : 0.60,\n#       'subwts': [+0.18, -0.5, -0.12],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.20, },  # Lb= 0.49187\n#         { 'name':file_short_names[2],'weight':0.50, },\n#       ]\n#     }\n\n\n# params_v35 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.38,\n#       'asc'   : 0.62,\n#       'subwts': [+0.12, -0.04, -0.08],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.20, },\n#         { 'name':file_short_names[2],'weight':0.50, },\n#       ]\n#     } # LB=0.49554 # Top.v29.Lb=0.49591 asc/desc 0.60 x 0.40\n\n# params_v36 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.42,\n#       'asc'   : 0.58,\n#       'subwts': [+0.12, -0.04, -0.08],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.20, },  #  Top.v29.Lb=0.49591 asc/desc 0.60 x 0.40\n#         { 'name':file_short_names[2],'weight':0.50, },\n#       ]\n#     } # LB=0.49591 # Top.v29.Lb=0.49591 asc/desc 0.60 x 0.40\n\n\n# params_v37 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.43,\n#       'asc'   : 0.57,                                   # LB=0.49591\n#       'subwts': [+0.12, -0.04, -0.08],\n#       'subm'  : [\n#         { 'name':file_short_names[0],'weight':0.30, },\n#         { 'name':file_short_names[1],'weight':0.20, },  #  Top.v29.Lb=0.49591 asc/desc 0.60 x 0.40\n#         { 'name':file_short_names[2],'weight':0.50, },  #  Top.v36.Lb=0.49591 asc/desc 0.58 x 0.42\n#       ]\n#     } \n\n# params_v39 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.41,\n#       'asc'   : 0.59,                                   # LB=0.49591\n#       'subwts': [+0.11, -0.036, -0.074],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.30,}, # Top.v29.Lb=0.49591 asc/desc 0.60 x 0.40\n#        {'name':file_short_names[1],'weight':0.20,}, # Top.v36.Lb=0.49591 asc/desc 0.58 x 0.42\n#        {'name':file_short_names[2],'weight':0.50,}, # Top.v37.Lb=0.49591 asc/desc 0.57 x 0.43\n#       ]\n#     }\n\n# params_v40 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.45,\n#       'asc'   : 0.55,                                   # LB=0.49472\n#       'subwts': [+0.40, -0.15, -0.25],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.30,},\n#        {'name':file_short_names[1],'weight':0.20,},\n#        {'name':file_short_names[2],'weight':0.50,},\n#       ]\n#     }\n\n# params_v41 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.45,\n#       'asc'   : 0.55,                                   # LB=0.49.591\n#       'subwts': [+0.11, -0.04, -0.07],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.23,},\n#        {'name':file_short_names[1],'weight':0.22,},\n#        {'name':file_short_names[2],'weight':0.55,},\n#       ]\n#     }\n\n# params_v42 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.45,\n#       'asc'   : 0.55,                                   # LB=0.49279\n#       'subwts': [+0.11, -0.04, -0.07],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.28,},\n#        {'name':file_short_names[1],'weight':0.27,},\n#        {'name':file_short_names[2],'weight':0.45,},\n#       ]\n#     }\n\n# params_v43 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.45,\n#       'asc'   : 0.55,                                   # LB=0.49426\n#       'subwts': [+0.11, -0.04, -0.07],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.20,},\n#        {'name':file_short_names[1],'weight':0.30,},\n#        {'name':file_short_names[2],'weight':0.50,},\n#       ]\n#     }\n\n# params_v44 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.44,\n#       'asc'   : 0.54,                                   # LB=0.49499\n#       'subwts': [+0.11, -0.04, -0.07],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.30,},\n#        {'name':file_short_names[1],'weight':0.20,},\n#        {'name':file_short_names[2],'weight':0.50,},\n#       ]\n#     }\n\n# path_to_ds ='/kaggle/input/20-juli-2025-flightrank/submission '\n\n# file_short_names = ['0.48425','0.49068','0.49343', '0.49472']\n\n# params_v46 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.30,                      # Lb=0.49407\n#       'asc'   : 0.70,                                \n#       'subwts': [+0.12, -0.01, -0.04, 0.07], # <- ERROR!!!\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.15,},\n#        {'name':file_short_names[1],'weight':0.22,},\n#        {'name':file_short_names[2],'weight':0.28,},\n#        {'name':file_short_names[2],'weight':0.35,},\n#       ]\n#     }\n\n# params_v47 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.40,                      # Lb=0.49426\n#       'asc'   : 0.60,                                \n#       'subwts': [+0.12, -0.01, -0.04, 0.07], # <- ERROR!!!\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.15,},\n#        {'name':file_short_names[1],'weight':0.22,},\n#        {'name':file_short_names[2],'weight':0.28,},\n#        {'name':file_short_names[2],'weight':0.35,},\n#       ]\n#     }\n\n# params_v48 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.50,                      # Lb=0.49398\n#       'asc'   : 0.50,                                \n#       'subwts': [+0.12, -0.01, -0.04, 0.07], # <- ERROR!!!\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.15,},\n#        {'name':file_short_names[1],'weight':0.22,},\n#        {'name':file_short_names[2],'weight':0.28,},\n#        {'name':file_short_names[2],'weight':0.35,},\n#       ]\n#     }\n\n# params_v49 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.60,                      # Lb=0.49435\n#       'asc'   : 0.40,                                \n#       'subwts': [+0.12, -0.01, -0.04, -0.07],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.15,},\n#        {'name':file_short_names[1],'weight':0.22,},\n#        {'name':file_short_names[2],'weight':0.28,},\n#        {'name':file_short_names[2],'weight':0.35,},\n#       ]\n#     }\n\n# params_v50 = {\n#       'path'  : path_to_ds,                                 \n#       'sort'  : \"asc\\desc\",\n#       'target': \"selected\",\n#       'q_rows': 6_897_776,\n#       'prefix': \"subm_\",\n#       'desc'  : 0.70,                      # Lb=0.49527\n#       'asc'   : 0.30,                                \n#       'subwts': [+0.12, -0.01, -0.04, -0.07],\n#       'subm'  : [\n#        {'name':file_short_names[0],'weight':0.15,},\n#        {'name':file_short_names[1],'weight':0.22,},\n#        {'name':file_short_names[2],'weight':0.28,},\n#        {'name':file_short_names[2],'weight':0.35,},\n#       ]\n#     }\n\n# params = params_v11  #  LB=0.48590\n# params = params_v12  #  LB=0.48507\n# params = params_v13  #  LB=0.48452\n# params = params_v14  #  LB=0.48590\n# params = params_v15  #  LB=0.48608  < \n# params = params_v17  #  LB=0.48544\n# params = params_v18  #  LB=0.48572\n# params = params_v19  #  LB=0.48572\n# params = params_v20  #  LB=0.48581\n# params = params_v21  #  LB=0.48608  <\n\n# params = params_v23  #  LB=0.49423  <\n# params = params_v24  #  LB=0.49233\n# params = params_v25  #  LB=0.49279\n\n# params = params_v26  #  LB=0.49315\n# params = params_v27  #  LB=0.49260\n# params = params_v28  #  LB=0.49560 \n# params = params_v29  #  LB=0.49591  < Top\n# params = params_v30  #  LB=0.49563\n# params = params_v31  #  LB=0.49481\n# params = params_v32  #  LB=0.49187\n\n# params = params_v35  #  LB=0.49554\n# params = params_v36  #  LB=0.49591\n# params = params_v37  #  LB=0.49591\n# params = params_v39  #  LB=0.49591\n# params = params_v40  #  LB=0.49472\n# params = params_v41  #  LB=0.49591\n# params = params_v42  #  LB=0.49279\n# params = params_v43  #  LB=0.49426\n# params = params_v44  #  LB=0.49499\n\n# params = params_v46  #  LB=?        asc/desc weights = [ 30 x 70 ] ! err.subwts\n# params = params_v47  #  LB=?        asc/desc weights = [ 40 x 60 ] ! err.subwts\n# params = params_v48  #  LB=?        asc/desc weights = [ 50 x 50 ] ! err.subwts\n# params = params_v49  #  LB=0.49435  asc/desc weights = [ 60 x 40 ]\n# params = params_v50  #  LB=0.49527  asc/desc weights = [ 70 x 30 ]","metadata":{"trusted":true,"_kg_hide-input":true,"_kg_hide-output":true,"jupyter":{"source_hidden":true}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"path_to_ds ='/kaggle/input/20-juli-2025-flightrank/submission '\n\nfile_short_names = ['0.48425','0.48507', '0.49343', '0.49472', '0.49508', '0.49857']\n\nparams_v53 = {\n      'path'  : path_to_ds,                                 \n      'sort'  : \"asc\\desc\",\n      'target': \"selected\",            # LB=0.49885\n      'q_rows': 6_897_776, \n      'prefix': \"subm_\",\n      'desc'  : 0.70,\n      'asc'   : 0.30,                                       \n      'subwts': [+0.15, +0.08, -0.01, -0.04, -0.07, -0.11],\n      'subm'  : [\n       {'name':file_short_names[0],'weight':0.05,},\n       {'name':file_short_names[1],'weight':0.05,},\n       {'name':file_short_names[2],'weight':0.11,},\n       {'name':file_short_names[3],'weight':0.12,},\n       {'name':file_short_names[4],'weight':0.13,},\n       {'name':file_short_names[5],'weight':0.54,},\n      ]\n    }\n\n\nparams_v54 = {\n      'path'  : path_to_ds,                                 \n      'sort'  : \"asc\\desc\",\n      'target': \"selected\",            # LB=0.49885   !   double\n      'q_rows': 6_897_776, \n      'prefix': \"subm_\",\n      'desc'  : 0.70,\n      'asc'   : 0.30,                                       \n      'subwts': [+0.15, +0.08, -0.01, -0.04, -0.07, -0.11],\n      'subm'  : [\n       {'name':file_short_names[0],'weight':0.05,},\n       {'name':file_short_names[1],'weight':0.05,},\n       {'name':file_short_names[2],'weight':0.11,},\n       {'name':file_short_names[3],'weight':0.12,},\n       {'name':file_short_names[4],'weight':0.13,},\n       {'name':file_short_names[5],'weight':0.54,},\n      ]\n    }\n                    #'0.48425',\nfile_short_names = [          '0.48507', '0.49343', '0.49472', '0.49508', '0.49857']\n\nparams_v55 = {\n      'path'  : path_to_ds,                                 \n      'sort'  : \"asc\\desc\",\n      'target': \"selected\",            # LB=0.50004\n      'q_rows': 6_897_776, \n      'prefix': \"subm_\",\n      'desc'  : 0.70,\n      'asc'   : 0.30,                                       \n      'subwts': [+0.14, +0.07, -0.03, -0.07, -0.11],\n      'subm'  : [\n       {'name':file_short_names[0],'weight':0.05,},\n       {'name':file_short_names[1],'weight':0.11,},\n       {'name':file_short_names[2],'weight':0.12,},\n       {'name':file_short_names[3],'weight':0.13,},\n       {'name':file_short_names[4],'weight':0.59,},\n      ]\n    }\n                    #'0.48425','0.48507', \nfile_short_names = [                    '0.49343', '0.49472', '0.49508', '0.49857']\n\nparams_v56 = {\n      'path'  : path_to_ds,                                 \n      'sort'  : \"asc\\desc\",\n      'target': \"selected\",            # LB=0.49490\n      'q_rows': 6_897_776, \n      'prefix': \"subm_\",\n      'desc'  : 0.70,\n      'asc'   : 0.30,                                       \n      'subwts': [+0.11, +0.02, -0.05, -0.08],\n      'subm'  : [\n       {'name':file_short_names[0],'weight':0.11,},\n       {'name':file_short_names[1],'weight':0.12,},\n       {'name':file_short_names[2],'weight':0.13,},\n       {'name':file_short_names[2],'weight':0.64,},\n      ]\n    }\n\n                    #'0.48425',           '0.49343', '0.49472',\nfile_short_names = [            '0.48507',                    '0.49508', '0.49857']\n\nparams_v57 = {\n      'path'  : path_to_ds,                                 \n      'sort'  : \"asc\\desc\",\n      'target': \"selected\",            # LB=?\n      'q_rows': 6_897_776, \n      'prefix': \"subm_\",\n      'desc'  : 0.70,\n      'asc'   : 0.30,                                       \n      'subwts': [+0.11, -0.04, -0.07],\n      'subm'  : [\n       {'name':file_short_names[1],'weight':0.07,},\n       {'name':file_short_names[2],'weight':0.14,},\n       {'name':file_short_names[2],'weight':0.79,},\n      ]\n    }","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"params = params_v57","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%time\n\n# params = params_v53  Lb=0.49_885\n# params = params_v55  Lb=0.50_004\n# params = params_v56  Lb=0.49_490\n\n\ndf = iBlend ( path_to_ds, file_short_names, params )\n\ndf.to_csv('submission_tida.csv', index=False)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df1 = pd.read_csv(\"submission_tida.csv\")\n\ndf2 = pd.read_csv(\"/kaggle/input/20-juli-2025-flightrank/submission 0.43916.csv\")\ndf3 = pd.read_csv(\"/kaggle/input/20-juli-2025-flightrank/submission 0.42163.csv\")\ndf4 = pd.read_csv(\"/kaggle/input/20-juli-2025-flightrank/submission 0.41226.csv\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-21T14:14:09.992842Z","iopub.execute_input":"2025-07-21T14:14:09.993134Z","iopub.status.idle":"2025-07-21T14:14:32.091894Z","shell.execute_reply.started":"2025-07-21T14:14:09.993113Z","shell.execute_reply":"2025-07-21T14:14:32.090819Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"#### [Simple Ensemble](https://www.kaggle.com/code/ducknew/simple-ensemble) by [ducknew](https://www.kaggle.com/code/ducknew/simple-ensemble)","metadata":{}},{"cell_type":"code","source":"dfs = [\n    df1,df2,df3,df4\n]\n\ndef rank2score(sr, eps=1e-6):\n    n = sr.max()\n    return 1.0 - (sr - 1) / (n + eps)\n\nscore_frames = []\nfor i, df in enumerate(dfs):\n    tmp = df[['Id', 'ranker_id', 'selected']].copy()\n    tmp['score'] = tmp.groupby('ranker_id')['selected'].transform(rank2score)\n    score_frames.append(tmp[['Id', 'ranker_id', 'score']].rename(columns={'score': f'score_{i}'}))\n\nmerged = score_frames[0]\nfor i in range(1, 4):\n    merged = merged.merge(score_frames[i], on=['Id', 'ranker_id'], how='left')\n\nweights = [0.997, 0.001, 0.001, 0.001]\nscore_cols = [f'score_{i}' for i in range(4)]\nw = pd.Series(weights, index=score_cols)\nmerged['score_mean'] = (merged[score_cols] * w).sum(axis=1) / w.sum()\n\ndef score2rank(s):\n    return s.rank(method='first', ascending=False).astype(int)\n\nmerged['selected'] = merged.groupby('ranker_id')['score_mean'].transform(score2rank)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-21T14:14:43.374029Z","iopub.execute_input":"2025-07-21T14:14:43.374359Z","iopub.status.idle":"2025-07-21T14:16:11.412053Z","shell.execute_reply.started":"2025-07-21T14:14:43.374335Z","shell.execute_reply":"2025-07-21T14:16:11.411250Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"out = merged[['Id', 'ranker_id', 'selected']]\n\nout.to_csv(\"submission.csv\", index=False, float_format='%.0f')\n\nout","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-21T14:16:19.336913Z","iopub.execute_input":"2025-07-21T14:16:19.337275Z","iopub.status.idle":"2025-07-21T14:16:34.439137Z","shell.execute_reply.started":"2025-07-21T14:16:19.337246Z","shell.execute_reply":"2025-07-21T14:16:34.438223Z"}},"outputs":[],"execution_count":null}]}