{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30786,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Assignment 1: Top-10 Solution Replication\n\n### 1. Base Solution Replicated\n- **Competition:** Child Mind Institute — Problematic Internet Use (\\$60,000 Cash Prize)\n- **Original Author/Architecture:** Lennart Haupts - 1st Place Ensemble (LightGBM + XGBoost + CatBoost)\n\n\n### Experiment Log\n| Version | Description & Pipeline Changes | Public LB | Private LB | Findings & Diagnostic Takeaways |\n| :--- | :--- | :---: | :---: | :--- |\n| **Baseline** | Exact replication of 1st-place training pipeline from scratch | 0.455 | **0.482** ||\n| **v2 (Mod 1)** | Added 5 unbinned domain interaction features (`Internet_Per_Age`, `Screen_vs_Activity`, `Pulse_Pressure`, `SMM_Fat_Ratio`, `PAQ_Combined`) | 0.446 | **0.469** | Worse performance. |\n| **v3 (Mod 2)** | Feature-importance-guided pruning (dropped bottom 3 noisy features) | 0.445 | **0.470** | Retained high-signal features (`Screen_vs_Activity` ranked #3 in LGBM). Quantile binning regularised splits. |\n| **v4 (Mod 3)** | Weighted post-threshold ensemble blending (`weights = [0.35, 0.15, 0.20, 0.25, 0.05]`) replacing simple majority mode voting | **0.449** | **0.473** | Highest modified performance (+0.004 Public / +0.003 Private). Up-weighting LGBM and CatBoost maximised leverage on top engineered features. |\n| **v5 (Mod 4)** | Pre-threshold continuous prediction blending with averaged threshold vectors | 0.445 | **0.471** | Individual model thresholding (Mod 3) proved superior to threshold averaging, as each tree family scales continuous residuals differently. |","metadata":{}},{"cell_type":"markdown","source":"![image.png](attachment:3ea90336-a108-432f-a764-17ebab3943cd.png)","metadata":{},"attachments":{"3ea90336-a108-432f-a764-17ebab3943cd.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAABNAAAAIaCAYAAADhkbANAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAP+lSURBVHhe7N1/XNRV3v//hxsIGuPPKR1WTbSALSEF/BispbQ5ZIRLga1irtA3dLWgT+FVoJnYL9wuqGuV7FL7rHi1orvK5uWPLdn20nZbWK/AClpXLMUsoR+U2Zg6avb9Y2Zg5s0wIGr+et5vt7nd4pwz7x/nnPe7eb8857y79O/f/3tERERERERERETEqx8ZE0RERERERERERKSFAmgiIiIiIiIiIiI+KIAmIiIiIiIiIiLigwJoIiIiIiIiIiIiPiiAJiIiIiIiIiIi4oMCaCIiIiIiIiIiIj4ogCYiIiIiIiIiIuKDAmgiIiIiIiIiIiI+KIAmIiIiIiIiIiLigwJoIiIiIiIiIiIiPiiAJiIiIiIiIiIi4kOX/v37f29MPF09evTAYrHQvXt3rrzySrp27Woscs4dP36cb7/9lm+//ZZPP/2Ub775xljktHTp0oXevXvTvXt3unbtyhVXXGEsIp3w3XffYbfbOXLkCF9//TXff39m3U/t1D7Vecec7XoSERERERGRS8cZBdB+9KMfERISwsCBA/nRjy6cwWynTp3i448/Zu/evZ16CDaZTFx99dUcO3aM77//nu+++65T25HWunTpwhVXXEGXLl3o1q0bn332GTabzVisQ9ROHaM675izWU8iIiIiIiJyael0AO3KK69k2LBhXHnllcasC4bNZmPnzp18++23xqw29ezZk549e3Ls2DFjlpwDAQEBHDp06LRHDKqdOk913jGdrScRERERERG59HR62Fj//v0v6OAZztEy/fv3Nya3yWQyXVYBgguB3W6nV69eBAUFGbPapHY6M52t8x49elxWdd6ZehIREREREZFLU6cCaD169GDQoEHG5AvSoEGDOhTo69KlS/PUNPlhHTt2rMOBTrXT2dGZOrfb7casS97p1JOIiIiIiIhcujoVQOvfvz9dunQxJl+QunTpwo9//GNjciu9e/dWUOY8Onr0KL179zYmt6J2Ons6Wue9evXi6NGjxuTLRkfrSURERERERC5dnQqgmUwmY9IFrSMj0Lp163bJLIZ+Mfr+++/p3r27MbkVtdPZ09E670iZS1lH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RMSHTgXQHK9QvXh05Hi/++47unTpYkyWH0iXLl347rvvjMmtqJ3OHtV5x3S0nkREREREROTS1akA2uHDh41JF7SOHK/dbueKK64wJssP5IorruhQoFPtdPaozjumo/UkIiIiIiIily4F0JyOHj16WY+yOd+6dOnCkSNHjMmtqJ3OHtV5x3S0nkREREREROTS1akAWkNDw0UzpenkyZM0NDQYk1s5ePAg3bp1MybLD6Rbt24cPHjQmNyK2unsUZ13TEfrSURERERERC5dnQqgHT16lPr6emPyBWnv3r0cPXrUmNzK999/z2effUZgYKAxS86xwMBAPv30U2OyV2qns0N13jGnU08iIiIiIiJy6epUAA1g//79fPPNN8bkC4rNZuOTTz4xJrfJZrNx6NChy3q0zQ+tW7dufP311x2aZuuidjozqvOOcY08O516EhERERERkUvTFUFBQfnGxI769NNP6dKlCz169Lig1kg6deoU+/fvZ+fOnXz//ffGbJ/sdjvfffcdffv25dSpU/zoRz867W1I27p06YKfnx9XXHEFQUFBfPHFF9hsNmOxdqmdOk513jHe6knBMxEREREREQHo0r9//zN+Au7Rowf9+/fnyiuv5Morr6Rr167GIufc8ePH+fbbbzly5AiNjY1nZXRc79696d69OwEBAZf1WwjPpu+++w673c7Ro0f56quvjNmdonbyTXXeMeeinkREREREROTScFYCaCIiIiIiIiIiIpeqTq+BJiIiIiIiIiIicjlQAE1ERERERERERMQHBdBERERERERERER8UABNRERERERERETEBwXQREREREREREREfFAATURERERERERExAcF0ERERERERERERHxQAE1ERERERERERMQHBdBERERERERERER8UABNRERERERERETEBwXQREREREREREREfFAATURERERERERExAcF0ERERERERERERHxQAE1ERERERERERMQHBdBERERERERERER8UABNRERERERERETEBwXQREREREREREREfFAATURERERERERExAcF0ERERERERERERHzo0r9//++Nie257rrrjEkiIiIiIiIiIiIXjA8++MCY1GmdCqCJiIiIiIiIiIhcLjSFU0RERERERERExAcF0ERERERERERERHxQAE1ERERERERERMQHBdBERERERERERER8UABNRERERERERETEBwXQREREREREREREfFAATURERERERERExAcF0ERERERERERERHxQAE1ERERERERERMQHBdBERERERERERER8UABNRERERERERETEBwXQREREREREREREfFAATURERERERERExAcF0ERERERERERERHxQAE1ERERERERERMQHBdBERERERERERER8UABNRERERERELjqhsVassaHGZJEzon4lbenSv3//742JIiIiIiIiIhea0JQCFsyII8xs8ki3NdVRsXQ+eWW7PdJFOkL9SjpCATQRERERERG5wMWSU7KAKZEmGmq2sK5kI1u2VdOIheixCSSlp5IQGYytZhXz04uoNH5dxCv1K+m48xdAM4/m/pnJRFi6c+LQLravfJm1u44YS3lhJafAwua8lewyZnXC6JzlTGMlmUVvGbPaN2gaBU+Gs+uJPFbuN2ZeOKw5S4ionUVRuTEnimnzEhnk+vNIE7ve2szm7fvpSEucTWfUDgCjc1g+DVZmFtHJLYiIiIiInJ6oacxLbP41zZGmHWxeuZm2H2sGMa3gScJ3PUHeeX2A8GfoxJncPyqcnv5HaKxdz8sr36LxhLHchcJC2rI1zI5oYsv8B8krbzQWAMBiLaB4QQLm2kImTS/Fe6mL1SCs2dMY1dP19yH2lK9l7fZG2m+29p6h3fLP6BlX/arzOl934dMKSGzM8/K8/8NrO/ZwaThPa6BFMHPeNAbtWckTD81m4fojROU8ybShxnLe+NO9e3f8jcmdtH39Slau325M7pj9m1m7ci2bT/vG8sPy796d7l4rzMKgoT05smsXu3btYtf+EwyaOI/fFGYz2mwse26dbjskzvsNMyPcEravZ+XK9XR8CyIiIiIiZ8gyiKH+e1i5ciUrN79Fo/9ocgpzGOX1tzfAfjavXcnaM3yAaPVb+DT1TMwld7Q/5Ytm89ATL7HDnMaTOfFn7RnrbLNkFZAVY6fi2RSPIIcleixjoy3NfzeW55HybAX2mCwKslrSLw09GTrUzJGtK1m5ci3l248wdFoBT6Z15MGtvWdot/wzeMZVv+q8M6m7tp/3T0/EzN8wL9GYenrO1rFcqK4ICgrKNyaeeyMZP/4If/z3zew/dYIjB3bw3nu7eG/fIU4A3c2D6Mkhjriirf49sfQLxH7YzilCGTO+J7v+coCQ28YTF3UD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vGjMFpGrrVUsI0aE0s7SGMr+l10bMvgwxzBtUOSGY6NrUgRnV6y+Nmun/dJ1TGC4zxbe/UITG0VERETk5vSLCqBVuse/Db6+LfiJnyixn6/6AHhbmlR9brvtNr47+b8cPeJ+bR8REREREREREZFfZAANwMtspmnTu7izaVMsTZpiadIEAPv589jPn+Xc2bOcOX2aCxc8LY4iIiIiIiIiIiK3ul9sAE1ERERERERERORq+JUxQURERERERERERKopgCYiIiIiIiIiIuKBAmgiIiIiIiIiIiIeKIAmIiIiIiIiIiLigQJoIiIiIiIiIiIiHiiAJiIiIiIiIiIi4oECaCIiIiIiIiIiIh4ogCYiIiIiIiIiIuKBAmgiIiIiIiIiIiIeKIAmIiIiIiIiIiLigQJoIiIiIiIiIiIiHiiAJiIiIiIiIiIi4oECaCIiIiIiIiIiIh4ogCYiIiIiIiIiIuKBAmgiIiIiIiIiIiIe3NayZcufjIn1ad++vTFJRERERERERETkhrF//35j0mW7rACaiIiIiIiIiIjIrUJTOEVERERERERERDxQAE1ERERERERERMQDBdBEREREREREREQ8UABNRERERERERETEAwXQREREREREREREPFAATURERERERERExAMF0ERERERERERERDxQAE1ERERERERERMQDBdBEREREREREREQ8UABNRERERERERETEAwXQREREREREREREPFAATURERERERERExAMF0ERERERERERERDxQAE1ERERERERERMQDBdBEREREREREREQ8UABNRERERERERETEAwXQREREREREREREPFAATURERERERERExAMF0ESAsemZZGamM9aYISIiIiIiIiK3vNtatmz5kzFRrp7wsWkMDTrFlmkLWWPMvBJxKcyNsBkS7exZvYyVOUXOn8eSnhmHv30Pr41NI8tQ+kYSGD+dSXFhWG2++FJMcWEROWsW8EJmflWZuJS5RNiA4u0sSM+k8ilrCBvN9IQQLEDhlmksXAMQxujpCYRYCutsh7TMHQwNKOD9bvGkGTOv6NpXKDqN5Y+FwJ7XGJvW0Bb01O7RpKRFYfMqZvuCdDJrPYiV+NRJdPctp3BjGgtrHBzO2LShBHnZ2bP6BVbmuOa5CB9L2tAgTtVZB85reO1h9Qsrqes09XL7DpRTuGUlC9dU95uf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KmYfmvrcTtl3JymrlVmZ39j981Seu8LddQ16TmTagNOsmJPBMag+ttTded0z+djwxnAtj/dXP5OPDW+TnbPfuR/pZPKx4W2ucFM/Zrytd0E9bVlnW18ut88bRNyMR/HeMINVruuMXS2X8izeLWjauLR2fZpMUOF6b0EMnzGCktef5+Mil2I+NrzNdfTVq6Wue6zMs+CmvT31hSvgtj1FRERERETkRvCLCKABNGrkRZ/IAeTu3sHZM5e2fpnPXc0I7tKNTz/J4ocLF4zZctWZ8OsdQdnWzyhWnODqMrWma08zu764lOmbPy//pDkMN61lxapsiiss+A0aT1KnIyx9cXWNTQpEREREREREbhS/mAAawK9//Wu69QjnX9+XcCD/G2O2W+2DOtL4N78h55/ZXLyo+VIi154PHUYkMTDwt3ibfqDk2228vWodJ+ob0SYiIiIiIiJynfyiAmiV7vFvg69vC37iJ0rs56s+AN6WJlWf2267je9O/i9HjxQYTyEiIiIiIiIiIgK/1AAagJfZTNOmd3Fn06ZYmjTF0qQJAPbz57GfP8u5s2c5c/o0Fy5o2IuIiIiIiIiIiNTtFxtAExERERERERERuRp+ZUwQERERERERERGRagqgiYiIiIiIiIiIeKAAmoiIiIiIiIiIiAcKoImIiIiIiIiIiHigAJqIiIiIiIiIiIgHCqCJiIiIiIiIiIh4oACaiIiIiIiIiIiIBwqgiYiIiIiIiIiIeKAAmoiIiIiIiIiIiAcKoImIiIiIiIiIiHigAJqIiIiIiIiIiIgHCqCJiIiIiIiIiIh4oACaiIiIiIiIiIiIBwqgiYiIiIiIiIiIeKAAmoiIiIiIiIiIiAe3tWzZ8idjYn3at29vTBIREREREREREblh7N+/35h02S4rgCYiIiIiIiIiInKr0BROERERERERERERDxRAExERERERERER8UABNBEREREREREREQ8UQBMREREREREREfFAATQREREREREREREPFEATERERERERERHxQAE0ERERERERERERDxRAExERERERERER8UABNBEREREREREREQ8UQBMREREREREREfFAATQREREREREREREPFEATERERERERERHx4P8Hm7a0RRVJWh8AAAAASUVORK5CYII="}}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os\nfrom sklearn.base import clone\nfrom sklearn.metrics import cohen_kappa_score, make_scorer, confusion_matrix\nfrom sklearn.model_selection import StratifiedKFold, KFold, train_test_split\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nfrom scipy.optimize import minimize\nfrom scipy import stats\nfrom concurrent.futures import ThreadPoolExecutor\nfrom tqdm import tqdm\nimport warnings\nfrom sklearn.linear_model import ElasticNetCV, LassoCV, Lasso, LinearRegression\nfrom sklearn.ensemble import ExtraTreesRegressor, RandomForestRegressor\nfrom lightgbm import LGBMRegressor\nfrom xgboost import XGBRegressor\nfrom catboost import CatBoostRegressor\nimport optuna\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport numpy as np\nimport random\n\nwarnings.filterwarnings('ignore')","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:04:25.930563Z","iopub.execute_input":"2026-10-19T15:04:25.931375Z","iopub.status.idle":"2026-10-19T15:04:29.667638Z","shell.execute_reply.started":"2026-10-19T15:04:25.931314Z","shell.execute_reply":"2026-10-19T15:04:29.666353Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"SEED = 643\nn_splits = 10\noptimize_params = False\nn_trials = 25 # n_trials for optuna \n# Modification 3\nvoting = False\nbase_thresholds = [30, 50, 80]","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:04:29.66954Z","iopub.execute_input":"2026-10-19T15:04:29.670088Z","iopub.status.idle":"2026-10-19T15:04:29.676638Z","shell.execute_reply.started":"2026-10-19T15:04:29.670052Z","shell.execute_reply":"2026-10-19T15:04:29.674403Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"TRAIN_PATH = '/kaggle/input/child-mind-institute-problematic-internet-use/train.csv'\nTEST_PATH = '/kaggle/input/child-mind-institute-problematic-internet-use/test.csv'\nTRAIN_TS_PATH = '/kaggle/input/child-mind-institute-problematic-internet-use/series_train.parquet'\nTEST_TS_PATH = '/kaggle/input/child-mind-institute-problematic-internet-use/series_test.parquet'\nSUBMISSION_PATH = '/kaggle/input/child-mind-institute-problematic-internet-use/sample_submission.csv'\nOUTPUT_PATH = '/kaggle/working/'","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-10-19T15:04:29.678301Z","iopub.execute_input":"2026-10-19T15:04:29.679176Z","iopub.status.idle":"2026-10-19T15:04:29.699512Z","shell.execute_reply.started":"2026-10-19T15:04:29.679126Z","shell.execute_reply":"2026-10-19T15:04:29.697887Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Load datasets\ntrain = pd.read_csv(TRAIN_PATH)\ntest = pd.read_csv(TEST_PATH)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:04:29.701229Z","iopub.execute_input":"2026-10-19T15:04:29.701778Z","iopub.status.idle":"2026-10-19T15:04:29.808871Z","shell.execute_reply.started":"2026-10-19T15:04:29.701739Z","shell.execute_reply":"2026-10-19T15:04:29.807784Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def perform_pca(train, test, n_components=None, random_state=42):\n    \"\"\"\n    Performs PCA on train, describes the Explained Variance Ratio and transforms train and test\n    \n    Returns: transformed train, transformed test, pca object\n    \n    \"\"\"\n    pca = PCA(n_components=n_components, random_state=random_state)\n    train_pca = pca.fit_transform(train)\n    test_pca = pca.transform(test)\n    \n    explained_variance_ratio = pca.explained_variance_ratio_\n    print(f\"Explained variance ratio of the components:\\n {explained_variance_ratio}\")\n    print(np.sum(explained_variance_ratio))\n    \n    train_pca_df = pd.DataFrame(train_pca, columns=[f'PC_{i+1}' for i in range(train_pca.shape[1])])\n    test_pca_df = pd.DataFrame(test_pca, columns=[f'PC_{i+1}' for i in range(test_pca.shape[1])])\n    \n    return train_pca_df, test_pca_df, pca","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:04:29.811379Z","iopub.execute_input":"2026-10-19T15:04:29.811779Z","iopub.status.idle":"2026-10-19T15:04:29.819598Z","shell.execute_reply.started":"2026-10-19T15:04:29.811743Z","shell.execute_reply":"2026-10-19T15:04:29.818407Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def time_features(df):\n    \"\"\"Function extracting Features from ActiGraph data of an individual\"\"\"\n    # Convert time_of_day to hours\n    df[\"hours\"] = df[\"time_of_day\"] // (3_600 * 1_000_000_000)\n    # Basic features \n    features = [\n        df[\"non-wear_flag\"].mean(),\n        df[\"enmo\"][df[\"enmo\"] >= 0.05].sum(),\n    ]\n    \n    # Define conditions for night, day, and no mask (full data)\n    night = ((df[\"hours\"] >= 22) | (df[\"hours\"] <= 5))\n    day = ((df[\"hours\"] <= 20) & (df[\"hours\"] >= 7))\n    no_mask = np.ones(len(df), dtype=bool)\n    \n    # List of columns of interest and masks\n    keys = [\"enmo\", \"anglez\", \"light\", \"battery_voltage\"]\n    masks = [no_mask, night, day]\n    \n    # Helper function for feature extraction\n    def extract_stats(data):\n        return [\n            data.mean(), \n            data.std(), \n            data.max(), \n            data.min(), \n            data.diff().mean(), \n            data.diff().std()\n        ]\n    \n    # Iterate over keys and masks to generate the statistics\n    for key in keys:\n        for mask in masks:\n            filtered_data = df.loc[mask, key]\n            features.extend(extract_stats(filtered_data))\n\n    return features\n\n# Code for parallelized computation of time series data from: Sheikh Muhammad Abdullah \n# https://www.kaggle.com/code/abdmental01/cmi-best-single-model\ndef process_file(filename, dirname):\n    # Process file and extract time features\n    df = pd.read_parquet(os.path.join(dirname, filename, 'part-0.parquet'))\n    df.drop('step', axis=1, inplace=True)\n    return time_features(df), filename.split('=')[1]\n\ndef load_time_series(dirname) -> pd.DataFrame:\n    # Load time series from directory in parallel\n    ids = os.listdir(dirname)\n    \n    with ThreadPoolExecutor() as executor:\n        results = list(tqdm(executor.map(lambda fname: process_file(fname, dirname), ids), total=len(ids)))\n    \n    stats, indexes = zip(*results)\n    \n    df = pd.DataFrame(stats, columns=[f\"stat_{i}\" for i in range(len(stats[0]))])\n    df['id'] = indexes\n    \n    return df","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:04:29.821151Z","iopub.execute_input":"2026-10-19T15:04:29.821663Z","iopub.status.idle":"2026-10-19T15:04:29.843565Z","shell.execute_reply.started":"2026-10-19T15:04:29.821598Z","shell.execute_reply":"2026-10-19T15:04:29.842155Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def feature_engineering(df):\n    season_cols = [col for col in df.columns if 'Season' in col]\n    df = df.drop(season_cols, axis=1) \n    \n    # From here on own features\n    def assign_group(age):\n        thresholds = [5, 6, 7, 8, 10, 12, 14, 17, 22]\n        for i, j in enumerate(thresholds):\n            if age <= j:\n                return i\n        return np.nan\n    \n    # Age groups\n    df[\"group\"] = df['Basic_Demos-Age'].apply(assign_group)\n    \n    # BMI \n    BMI_map = {0: 16.3,1: 15.9,2: 16.1,3: 16.8,4: 17.3,5: 19.2,6: 20.2,7: 22.3, 8: 23.6}\n    df['BMI_mean_norm'] = df[['Physical-BMI', 'BIA-BIA_BMI']].mean(axis=1) / df[\"group\"].map(BMI_map)\n    \n    # FGC zone aggregate\n    zones = ['FGC-FGC_CU_Zone', 'FGC-FGC_GSND_Zone', 'FGC-FGC_GSD_Zone',\n             'FGC-FGC_PU_Zone', 'FGC-FGC_SRL_Zone', 'FGC-FGC_SRR_Zone',\n             'FGC-FGC_TL_Zone']\n    \n    df['FGC_Zones_mean'] = df[zones].mean(axis=1)\n    df['FGC_Zones_min'] = df[zones].min(axis=1)\n    df['FGC_Zones_max'] = df[zones].max(axis=1)\n    \n    # Grip\n    GSD_max_map = {0: 9, 1: 9, 2: 9, 3: 9, 4: 16.2, 5: 19.9, 6: 26.1, 7: 31.3, 8: 35.4}\n    GSD_min_map = {0: 9, 1: 9, 2: 9, 3: 9, 4: 14.4, 5: 17.8, 6: 23.4, 7: 27.8, 8: 31.1}\n    \n    df['GS_max'] = df[['FGC-FGC_GSND', 'FGC-FGC_GSD']].max(axis=1) / df[\"group\"].map(GSD_max_map)\n    df['GS_min'] = df[['FGC-FGC_GSND', 'FGC-FGC_GSD']].min(axis=1) / df[\"group\"].map(GSD_min_map)\n    \n    # Curl-ups, push-ups, trunk-lifts... normalized based on age-group\n    cu_map = {0: 1.0, 1: 3.0, 2: 5.0, 3: 7.0, 4: 10.0, 5: 14.0, 6: 20.0, 7: 20.0, 8: 20.0}\n    pu_map = {0: 1.0, 1: 2.0, 2: 3.0, 3: 4.0, 4: 5.0, 5: 7.0, 6: 8.0, 7: 10.0, 8: 14.0}\n    tl_map = {0: 8.0, 1: 8.0, 2: 8.0, 3: 9.0, 4: 9.0, 5: 10.0, 6: 10.0, 7: 10.0, 8: 10.0}\n    \n    df[\"CU_norm\"] = df['FGC-FGC_CU'] / df['group'].map(cu_map)\n    df[\"PU_norm\"] = df['FGC-FGC_PU'] / df['group'].map(pu_map)\n    df[\"TL_norm\"] = df['FGC-FGC_TL'] / df['group'].map(tl_map)\n    \n    # Reach \n    df[\"SR_min\"] = df[['FGC-FGC_SRL', 'FGC-FGC_SRR']].min(axis=1)\n    df[\"SR_max\"] = df[['FGC-FGC_SRL', 'FGC-FGC_SRR']].max(axis=1)\n\n    # BIA Features\n    # Energy Expenditure\n    bmr_map = {0: 934.0, 1: 941.0, 2: 999.0, 3: 1048.0, 4: 1283.0, 5: 1255.0, 6: 1481.0, 7: 1519.0, 8: 1650.0}\n    dee_map = {0: 1471.0, 1: 1508.0, 2: 1640.0, 3: 1735.0, 4: 2132.0, 5: 2121.0, 6: 2528.0, 7: 2566.0, 8: 2793.0}\n    df[\"BMR_norm\"] = df[\"BIA-BIA_BMR\"] / df[\"group\"].map(bmr_map)\n    df[\"DEE_norm\"] = df[\"BIA-BIA_DEE\"] / df[\"group\"].map(dee_map)\n    df[\"DEE_BMR\"] = df[\"BIA-BIA_DEE\"] - df[\"BIA-BIA_BMR\"]\n\n    # FMM\n    ffm_map = {0: 42.0, 1: 43.0, 2: 49.0, 3: 54.0, 4: 60.0, 5: 76.0, 6: 94.0, 7: 104.0, 8: 111.0}\n    df[\"FFM_norm\"] = df[\"BIA-BIA_FFM\"] / df[\"group\"].map(ffm_map)\n\n    # ECW ICW\n    df[\"ICW_ECW\"] = df[\"BIA-BIA_ECW\"] / df[\"BIA-BIA_ICW\"]\n\n\n    \n    # Modification 1\n    # Modification 2 - Kept top-ranking features (Internet_Per_Age, Screen_vs_Activity) \n    # and pruned low-importance noisy features (Pulse_Pressure, SMM_Fat_Ratio)\n    # 1. Age related Internet usage\n    df[\"Internet_Per_Age\"] = df[\"PreInt_EduHx-computerinternet_hoursday\"] / (df[\"Basic_Demos-Age\"] + 1)\n    # 2. Combined Physical Activity score\n    #df[\"PAQ_Combined\"] = df[[\"PAQ_A-PAQ_A_Total\", \"PAQ_C-PAQ_C_Total\"]].mean(axis=1)\n    # 3. Screen to activity balance\n    paq_combined = df[[\"PAQ_A-PAQ_A_Total\", \"PAQ_C-PAQ_C_Total\"]].mean(axis=1)\n    df[\"Screen_vs_Activity\"] = df[\"PreInt_EduHx-computerinternet_hoursday\"] / (paq_combined + 0.5) # Increased the constant as it was large valued\n    # 4. Pulse Pressure\n    #df[\"Pulse_Pressure\"] = df[\"Physical-Systolic_BP\"] - df[\"Physical-Diastolic_BP\"]\n    #5/ Skeletal Muscle Mass to Body fat\n    #df[\"SMM_Fat_Ratio\"] = df[\"BIA-BIA_SMM\"] / (df[\"BIA-BIA_Fat\"] + 0.1)\n\n\n\n    \n    drop_feats = ['FGC-FGC_GSND', 'FGC-FGC_GSD', 'FGC-FGC_CU_Zone', 'FGC-FGC_GSND_Zone', 'FGC-FGC_GSD_Zone',\n                  'FGC-FGC_PU_Zone', 'FGC-FGC_SRL_Zone', 'FGC-FGC_SRR_Zone', 'FGC-FGC_TL_Zone',\n                  'Physical-BMI', 'BIA-BIA_BMI', 'FGC-FGC_CU', 'FGC-FGC_PU', 'FGC-FGC_TL', 'FGC-FGC_SRL', 'FGC-FGC_SRR',\n                 'BIA-BIA_BMR', 'BIA-BIA_DEE', 'BIA-BIA_Frame_num', \"BIA-BIA_FFM\"]\n    df = df.drop(drop_feats, axis=1) \n    return df","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:04:29.845368Z","iopub.execute_input":"2026-10-19T15:04:29.845838Z","iopub.status.idle":"2026-10-19T15:04:29.872124Z","shell.execute_reply.started":"2026-10-19T15:04:29.845802Z","shell.execute_reply":"2026-10-19T15:04:29.870401Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_ts = load_time_series(TRAIN_TS_PATH)\ntest_ts = load_time_series(TEST_TS_PATH)\n\ndf_train = train_ts.drop('id', axis=1)\ndf_test = test_ts.drop('id', axis=1)\n\n# Scaling before PCA\nscaler = StandardScaler()\ndf_train = pd.DataFrame(scaler.fit_transform(df_train), columns=df_train.columns)\ndf_test = pd.DataFrame(scaler.transform(df_test), columns=df_test.columns)\n\n# Mean imputation of actigraph data before PCA\nfor c in df_train.columns:\n    m = np.mean(df_train[c])\n    df_train[c].fillna(m, inplace=True)\n    df_test[c].fillna(m, inplace=True)\n\nprint(df_train.shape)\n\ndf_train_pca, df_test_pca, pca = perform_pca(df_train, df_test, n_components=15, random_state=SEED)\n\ndf_train_pca['id'] = train_ts['id']\ndf_test_pca['id'] = test_ts['id']\n\ntrain = pd.merge(train, df_train_pca, how=\"left\", on='id')\ntest = pd.merge(test, df_test_pca, how=\"left\", on='id')\ntrain.shape","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:04:29.873752Z","iopub.execute_input":"2026-10-19T15:04:29.874662Z","iopub.status.idle":"2026-10-19T15:06:06.087309Z","shell.execute_reply.started":"2026-10-19T15:04:29.874609Z","shell.execute_reply":"2026-10-19T15:06:06.086286Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def clean_features(df):\n    # Remove highly implausible values\n\n    # Clip Grip\n    df[['FGC-FGC_GSND', 'FGC-FGC_GSD']] = df[['FGC-FGC_GSND', 'FGC-FGC_GSD']].clip(lower=9, upper=60)\n    # Remove implausible body-fat\n    df[\"BIA-BIA_Fat\"] = np.where(df[\"BIA-BIA_Fat\"] < 5, np.nan, df[\"BIA-BIA_Fat\"])\n    df[\"BIA-BIA_Fat\"] = np.where(df[\"BIA-BIA_Fat\"] > 60, np.nan, df[\"BIA-BIA_Fat\"])\n    # Basal Metabolic Rate\n    df[\"BIA-BIA_BMR\"] = np.where(df[\"BIA-BIA_BMR\"] > 4000, np.nan, df[\"BIA-BIA_BMR\"])\n    # Daily Energy Expenditure\n    df[\"BIA-BIA_DEE\"] = np.where(df[\"BIA-BIA_DEE\"] > 8000, np.nan, df[\"BIA-BIA_DEE\"])\n    # Bone Mineral Content\n    df[\"BIA-BIA_BMC\"] = np.where(df[\"BIA-BIA_BMC\"] <= 0, np.nan, df[\"BIA-BIA_BMC\"])\n    df[\"BIA-BIA_BMC\"] = np.where(df[\"BIA-BIA_BMC\"] > 10, np.nan, df[\"BIA-BIA_BMC\"])\n    # Fat Free Mass Index\n    df[\"BIA-BIA_FFM\"] = np.where(df[\"BIA-BIA_FFM\"] <= 0, np.nan, df[\"BIA-BIA_FFM\"])\n    df[\"BIA-BIA_FFM\"] = np.where(df[\"BIA-BIA_FFM\"] > 300, np.nan, df[\"BIA-BIA_FFM\"])\n    # Fat Mass Index\n    df[\"BIA-BIA_FMI\"] = np.where(df[\"BIA-BIA_FMI\"] < 0, np.nan, df[\"BIA-BIA_FMI\"])\n    # Extra Cellular Water\n    df[\"BIA-BIA_ECW\"] = np.where(df[\"BIA-BIA_ECW\"] > 100, np.nan, df[\"BIA-BIA_ECW\"])\n    # Intra Cellular Water\n    # df[\"BIA-BIA_ICW\"] = np.where(df[\"BIA-BIA_ICW\"] > 100, np.nan, df[\"BIA-BIA_ICW\"])\n    # Lean Dry Mass\n    df[\"BIA-BIA_LDM\"] = np.where(df[\"BIA-BIA_LDM\"] > 100, np.nan, df[\"BIA-BIA_LDM\"])\n    # Lean Soft Tissue\n    df[\"BIA-BIA_LST\"] = np.where(df[\"BIA-BIA_LST\"] > 300, np.nan, df[\"BIA-BIA_LST\"])\n    # Skeletal Muscle Mass\n    df[\"BIA-BIA_SMM\"] = np.where(df[\"BIA-BIA_SMM\"] > 300, np.nan, df[\"BIA-BIA_SMM\"])\n    # Total Body Water\n    df[\"BIA-BIA_TBW\"] = np.where(df[\"BIA-BIA_TBW\"] > 300, np.nan, df[\"BIA-BIA_TBW\"])\n    \n    return df\n\ntrain = clean_features(train)\ntest = clean_features(test)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.089317Z","iopub.execute_input":"2026-10-19T15:06:06.090365Z","iopub.status.idle":"2026-10-19T15:06:06.158867Z","shell.execute_reply.started":"2026-10-19T15:06:06.090312Z","shell.execute_reply":"2026-10-19T15:06:06.15773Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# def assign_group(age):\n#     thresholds = [5, 6, 7, 8, 10, 12, 14, 17, 22]\n#     for i, j in enumerate(thresholds):\n#         if age <= j:\n#             return i\n#     return np.nan\n\n# fit = ['BIA-BIA_SMM',\n#        'BIA-BIA_TBW']\n\n# # train[['FGC-FGC_GSND', 'FGC-FGC_GSD']] = train[['FGC-FGC_GSND', 'FGC-FGC_GSD']].clip(lower=9, upper=60)\n# # train['GSD_max'] = train[['FGC-FGC_GSND', 'FGC-FGC_GSD']].max(axis=1)\n# # train['GSD_min'] = train[['FGC-FGC_GSND', 'FGC-FGC_GSD']].min(axis=1)\n# train[\"DEE_BMR\"] = train['BIA-BIA_DEE'] - train['BIA-BIA_BMR']\n# train[\"group\"] = train['Basic_Demos-Age'].apply(assign_group)\n# train.value_counts(\"group\")\n# np.round(train.groupby([\"group\"])[fit].mean())","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.161976Z","iopub.execute_input":"2026-10-19T15:06:06.162919Z","iopub.status.idle":"2026-10-19T15:06:06.180361Z","shell.execute_reply.started":"2026-10-19T15:06:06.162853Z","shell.execute_reply":"2026-10-19T15:06:06.178763Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# train[fit].describe()","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.181795Z","iopub.execute_input":"2026-10-19T15:06:06.18356Z","iopub.status.idle":"2026-10-19T15:06:06.22138Z","shell.execute_reply.started":"2026-10-19T15:06:06.183513Z","shell.execute_reply":"2026-10-19T15:06:06.219481Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# info = pd.read_csv(\"/kaggle/input/child-mind-institute-problematic-internet-use/data_dictionary.csv\")\n# info[33:]","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.222758Z","iopub.execute_input":"2026-10-19T15:06:06.22312Z","iopub.status.idle":"2026-10-19T15:06:06.243999Z","shell.execute_reply.started":"2026-10-19T15:06:06.223085Z","shell.execute_reply":"2026-10-19T15:06:06.242333Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Perform feature_engineering on train and test\ntrain = feature_engineering(train)\ntest = feature_engineering(test)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.246034Z","iopub.execute_input":"2026-10-19T15:06:06.246497Z","iopub.status.idle":"2026-10-19T15:06:06.349841Z","shell.execute_reply.started":"2026-10-19T15:06:06.246444Z","shell.execute_reply":"2026-10-19T15:06:06.348713Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def bin_data(train, test, columns, n_bins=10):\n    # Combine train and test for consistent bin edges\n    combined = pd.concat([train, test], axis=0)\n    \n    bin_edges = {}\n    for col in columns:\n        # Compute quantile bin edges\n        edges = pd.qcut(combined[col], n_bins, retbins=True, labels=False, duplicates=\"drop\")[1]\n        bin_edges[col] = edges\n    \n    # Apply the same bin edges to both train and test\n    for col, edges in bin_edges.items():\n        train[col] = pd.cut(\n            train[col], bins=edges, labels=range(len(edges) - 1), include_lowest=True\n        ).astype(float)\n        test[col] = pd.cut(\n            test[col], bins=edges, labels=range(len(edges) - 1), include_lowest=True\n        ).astype(float)\n    \n    return train, test\n\ncolumns_to_bin = [\n    \"PAQ_A-PAQ_A_Total\", \"BMR_norm\", \"DEE_norm\", \"GS_min\", \"GS_max\", \"BIA-BIA_FFMI\", \n    \"BIA-BIA_BMC\", \"Physical-HeartRate\", \"BIA-BIA_ICW\", \"Fitness_Endurance-Time_Sec\", \n    \"BIA-BIA_LDM\", \"BIA-BIA_SMM\", \"BIA-BIA_TBW\", \"DEE_BMR\", \"ICW_ECW\",\n    #added mine\n    \"Screen_vs_Activity\", \"Internet_Per_Age\"\n]\n# Bin specified columns in train and test\ntrain, test = bin_data(train, test, columns_to_bin, n_bins=10)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.354451Z","iopub.execute_input":"2026-10-19T15:06:06.355126Z","iopub.status.idle":"2026-10-19T15:06:06.47948Z","shell.execute_reply.started":"2026-10-19T15:06:06.355085Z","shell.execute_reply":"2026-10-19T15:06:06.477922Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Features to exclude, because they're not in test\nexclude = ['PCIAT-Season', 'PCIAT-PCIAT_01', 'PCIAT-PCIAT_02', 'PCIAT-PCIAT_03',\n           'PCIAT-PCIAT_04', 'PCIAT-PCIAT_05', 'PCIAT-PCIAT_06', 'PCIAT-PCIAT_07',\n           'PCIAT-PCIAT_08', 'PCIAT-PCIAT_09', 'PCIAT-PCIAT_10', 'PCIAT-PCIAT_11',\n           'PCIAT-PCIAT_12', 'PCIAT-PCIAT_13', 'PCIAT-PCIAT_14', 'PCIAT-PCIAT_15',\n           'PCIAT-PCIAT_16', 'PCIAT-PCIAT_17', 'PCIAT-PCIAT_18', 'PCIAT-PCIAT_19',\n           'PCIAT-PCIAT_20', 'PCIAT-PCIAT_Total', 'sii', 'id']\n\ny_model = \"PCIAT-PCIAT_Total\" # Score, target for the model\ny_comp = \"sii\" # Index, target of the competition\nfeatures = [f for f in train.columns if f not in exclude]\n\n# Categorical features\ncat_c = []\n\n# Mapping of categorical features (already dropped in feature engineering)\nfor col in cat_c:\n    a_map = {}\n    all_unique = set(train[col].unique()) | set(test[col].unique())\n    for i, value in enumerate(all_unique):\n        a_map[value] = i\n\n    train[col] = train[col].map(a_map)\n    test[col] = test[col].map(a_map)\n    \ntrain = train[train[\"sii\"].notna()] # Keep rows where target is available\ntrain.shape","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.481821Z","iopub.execute_input":"2026-10-19T15:06:06.482213Z","iopub.status.idle":"2026-10-19T15:06:06.501615Z","shell.execute_reply.started":"2026-10-19T15:06:06.482178Z","shell.execute_reply":"2026-10-19T15:06:06.49974Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Plot distribution of total scores which determine the sii\n# Note the excess zeros -> consider other objective functions\nsns.set_theme(style=\"whitegrid\")\nplt.hist(train['PCIAT-PCIAT_Total'], bins=50, color=\"darkorange\")\nplt.title('Score Distribution')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:06.503407Z","iopub.execute_input":"2026-10-19T15:06:06.503818Z","iopub.status.idle":"2026-10-19T15:06:07.145007Z","shell.execute_reply.started":"2026-10-19T15:06:06.503782Z","shell.execute_reply":"2026-10-19T15:06:07.143384Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"class Impute_With_Model:\n    \n    def __init__(self, na_frac=0.5, min_samples=0):\n        self.model_dict = {} # Dictionary storing models for imputation\n        self.mean_dict = {} # Dictionary storing mean of feature\n        self.features = None\n        self.na_frac = na_frac # Maximum fraction of missing values allowed for features to be used\n        self.min_samples = min_samples # Minimum number of samples required for model fitting\n        \n    def find_features(self, data, feature, tmp_features):\n        # Finds valid features where the fraction of missing values is <= na_frac\n        missing_rows = data[feature].isna()\n        na_fraction = data[missing_rows][tmp_features].isna().mean(axis=0)\n        valid_features = np.array(tmp_features)[na_fraction <= self.na_frac]\n        return valid_features\n\n    def fit_models(self, model, data, features):\n        self.features = features\n        n_data = data.shape[0]\n        for feature in features:\n            self.mean_dict[feature] = np.mean(data[feature])\n        # Iterate over all features\n        for feature in tqdm(features):\n            # Impute if there are missing values in the data\n            if data[feature].isna().sum() > 0:\n                model_clone = clone(model)\n                X = data[data[feature].notna()].copy() # Select data where target values are available as trainings data\n                tmp_features = [f for f in features if f != feature]\n                tmp_features = self.find_features(data, feature, tmp_features)\n                if len(tmp_features) >= 1 and X.shape[0] > self.min_samples:\n                    # Fit model if enough features and sufficient samples\n                    for f in tmp_features:\n                        X[f] = X[f].fillna(self.mean_dict[f])\n                    model_clone.fit(X[tmp_features], X[feature])\n                    # Add model and features to dictionary\n                    self.model_dict[feature] = (model_clone, tmp_features.copy())\n                else:\n                    # Revert to mean imputation if too few \n                    self.model_dict[feature] = (\"mean\", np.mean(data[feature]))\n            \n    def impute(self, data):\n        imputed_data = data.copy()\n        # Iterate over models\n        for feature, model in self.model_dict.items():\n            missing_rows = imputed_data[feature].isna() # Identify rows to be imputed\n            if missing_rows.any():\n                if model[0] == \"mean\":\n                    # Mean imputation if \"mean\"\n                    imputed_data[feature].fillna(model[1], inplace=True)\n                else:\n                    # Prepare data for imputation and predict\n                    tmp_features = [f for f in self.features if f != feature]\n                    X_missing = data.loc[missing_rows, tmp_features].copy()\n                    for f in tmp_features:\n                        X_missing[f] = X_missing[f].fillna(self.mean_dict[f])\n                    imputed_data.loc[missing_rows, feature] = model[0].predict(X_missing[model[1]])\n        return imputed_data","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:07.14674Z","iopub.execute_input":"2026-10-19T15:06:07.147262Z","iopub.status.idle":"2026-10-19T15:06:07.16515Z","shell.execute_reply.started":"2026-10-19T15:06:07.14721Z","shell.execute_reply":"2026-10-19T15:06:07.163495Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"missing = pd.DataFrame(train.isna().sum() / len(train))\nmissing[missing[0] > 0.3][:60]","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:07.166859Z","iopub.execute_input":"2026-10-19T15:06:07.167652Z","iopub.status.idle":"2026-10-19T15:06:07.22676Z","shell.execute_reply.started":"2026-10-19T15:06:07.16761Z","shell.execute_reply":"2026-10-19T15:06:07.224842Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model = LassoCV(cv=5, random_state=SEED)\nimputer = Impute_With_Model(na_frac=0.4) \nimputer.fit_models(model, train, features)\ntrain = imputer.impute(train)\ntest = imputer.impute(test)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:07.228594Z","iopub.execute_input":"2026-10-19T15:06:07.229082Z","iopub.status.idle":"2026-10-19T15:06:26.631036Z","shell.execute_reply.started":"2026-10-19T15:06:07.229029Z","shell.execute_reply":"2026-10-19T15:06:26.629304Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Code for finding optimal thresholds copied from: Michael Semenoff\n# https://www.kaggle.com/code/michaelsemenoff/cmi-actigraphy-feature-engineering-selection\ndef round_with_thresholds(raw_preds, thresholds):\n    return np.where(raw_preds < thresholds[0], int(0),\n                    np.where(raw_preds < thresholds[1], int(1),\n                             np.where(raw_preds < thresholds[2], int(2), int(3))))\n\ndef optimize_thresholds(y_true, raw_preds, start_vals=[0.5, 1.5, 2.5]):\n    def fun(thresholds, y_true, raw_preds):\n        rounded_preds = round_with_thresholds(raw_preds, thresholds)\n        return -cohen_kappa_score(y_true, rounded_preds, weights='quadratic')\n\n    res = minimize(fun, x0=start_vals, args=(y_true, raw_preds), method='Powell')\n    assert res.success\n    return res.x","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.632524Z","iopub.execute_input":"2026-10-19T15:06:26.632885Z","iopub.status.idle":"2026-10-19T15:06:26.641185Z","shell.execute_reply.started":"2026-10-19T15:06:26.632851Z","shell.execute_reply":"2026-10-19T15:06:26.639809Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def calculate_weights(series):\n    # Create bins for the target variable and assign weights based on frequency\n    bins = pd.cut(series, bins=10, labels=False)\n    weights = bins.value_counts().reset_index()\n    weights.columns = ['target_bins', 'count']\n    weights['count'] = 1 / weights['count']\n    weight_map = weights.set_index('target_bins')['count'].to_dict()\n    weights = bins.map(weight_map)\n    return weights / weights.mean() ","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.642598Z","iopub.execute_input":"2026-10-19T15:06:26.642962Z","iopub.status.idle":"2026-10-19T15:06:26.678587Z","shell.execute_reply.started":"2026-10-19T15:06:26.642927Z","shell.execute_reply":"2026-10-19T15:06:26.677281Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def cross_validate(model_, data, features, score_col, index_col, cv, sample_weights=False, verbose=False):\n    \"\"\"\n    Perform cross-validation with a given model and compute the out-of-fold \n    predictions and Cohen's Kappa score for each fold.\n\n    Returns:\n    float: Mean Kappa score across all folds.\n    array: Out-of-fold score predictions for the entire dataset.\n    \"\"\"\n    kappa_scores = [] \n    oof_score_predictions = np.zeros(len(data))  \n\n    score_to_index_thresholds = base_thresholds  \n    thresholds = []\n    for fold_idx, (train_idx, val_idx) in enumerate(cv.split(data, data[index_col])):\n        X_train, X_val = data[features].iloc[train_idx], data[features].iloc[val_idx]\n        y_train_score = data[score_col].iloc[train_idx] \n        y_train_index = data[index_col].iloc[train_idx]\n        y_val_score = data[score_col].iloc[val_idx]      \n        y_val_index = data[index_col].iloc[val_idx]     \n        \n        # Train model with sample weights if provided\n        if sample_weights:\n            weights = calculate_weights(y_train_score)\n            model_.fit(X_train, y_train_score, sample_weight=weights)\n        else:\n            model_.fit(X_train, y_train_score)\n\n        y_pred_train_score = model_.predict(X_train)\n        y_pred_val_score = model_.predict(X_val)\n        \n        oof_score_predictions[val_idx] = y_pred_val_score \n\n        # Find optimal threshold in sample \n        t_1 = optimize_thresholds(y_train_index, y_pred_train_score, start_vals=base_thresholds)\n        thresholds.append(t_1)\n\n        y_pred_val_index = round_with_thresholds(y_pred_val_score, t_1)\n\n        kappa_score = cohen_kappa_score(y_val_index, y_pred_val_index, weights='quadratic')\n        kappa_scores.append(kappa_score)\n        \n        if verbose:\n            print(f\"Fold {fold_idx}: Optimized Kappa Score = {kappa_score}\")\n    \n    if verbose:\n        print(f\"## Mean CV Kappa Score: {np.mean(kappa_scores)} ##\")\n        print(f\"## Std CV: {np.std(kappa_scores)}\")\n    \n    return np.mean(kappa_scores), oof_score_predictions, thresholds\n\ndef n_cross_validate(model_, data, features, score_col, index_col, cv, seeds, sample_weights=False, verbose=False):\n    # Performs repeated cross-validation by reseeding the cv object\n    scores = []\n    for seed in seeds:\n        cv.random_state=seed\n        score, oof, _ = cross_validate(model_, data, features, score_col, index_col, cv, sample_weights=True, verbose=False)\n        scores.append(score)\n    return score, oof","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.680296Z","iopub.execute_input":"2026-10-19T15:06:26.680839Z","iopub.status.idle":"2026-10-19T15:06:26.69724Z","shell.execute_reply.started":"2026-10-19T15:06:26.680786Z","shell.execute_reply":"2026-10-19T15:06:26.695949Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def objective(trial, model_type, X, features, score_col, index_col, cv, sample_weights=False):\n    # Parameter space to explore if model is xgboost\n    if model_type == 'xgboost':\n        params = {\n            'objective': trial.suggest_categorical('objective', ['reg:tweedie', 'reg:pseudohubererror']),\n            'random_state': SEED,\n            'num_parallel_tree': trial.suggest_int('num_parallel_tree', 2, 30),\n            'n_estimators': trial.suggest_int('n_estimators', 100, 300),\n            'max_depth': trial.suggest_int('max_depth', 2, 4),\n            'learning_rate': trial.suggest_loguniform('learning_rate', 0.02, 0.05),\n            'subsample': trial.suggest_float('subsample', 0.5, 0.8),\n            'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 0.8),\n            'reg_alpha': trial.suggest_loguniform('reg_alpha', 1e-5, 1e-1),\n            'reg_lambda': trial.suggest_loguniform('reg_lambda', 1e-5, 1e-1),\n        }\n        if params['objective'] == 'reg:tweedie':\n            params['tweedie_variance_power'] = trial.suggest_float('tweedie_variance_power', 1, 2)\n        model = XGBRegressor(**params, use_label_encoder=False)\n    \n    # Parameter space to explore if model is lightgbm\n    elif model_type == 'lightgbm':\n        params = {\n            'objective': trial.suggest_categorical('objective', ['poisson', 'tweedie', 'regression']),\n            'random_state': SEED,\n            'verbosity': -1,\n            'n_estimators': trial.suggest_int('n_estimators', 100, 300),\n            'max_depth': trial.suggest_int('max_depth', 2, 4),\n            'learning_rate': trial.suggest_loguniform('learning_rate', 0.01, 0.05),\n            'subsample': trial.suggest_float('subsample', 0.5, 0.8),\n            'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 0.8),\n            'min_data_in_leaf': trial.suggest_int('min_data_in_leaf', 20, 100)\n        }\n        if params['objective'] == 'tweedie':\n            params['tweedie_variance_power'] = trial.suggest_float('tweedie_variance_power', 1, 2)\n        model = LGBMRegressor(**params)\n    \n    # Parameter space to explore if model is catboost\n    elif model_type == 'catboost':\n        params = {\n            'loss_function': trial.suggest_categorical('objective', ['Tweedie:variance_power=1.5', \n                                                                     'Poisson', 'RMSE']),\n            'random_state': SEED,\n            'iterations': trial.suggest_int('iterations', 100, 300),\n            'depth': trial.suggest_int('depth', 2, 4),\n            'learning_rate': trial.suggest_loguniform('learning_rate', 0.01, 0.05),\n            'l2_leaf_reg': trial.suggest_loguniform('l2_leaf_reg', 1e-3, 1e-1),\n            'subsample': trial.suggest_float('subsample', 0.5, 0.7),\n            'bagging_temperature': trial.suggest_float('bagging_temperature', 0.0, 1.0),\n            'random_strength': trial.suggest_float('random_strength', 1e-3, 10.0),\n            'min_data_in_leaf': trial.suggest_int('min_data_in_leaf', 20, 60),\n        }\n        model = CatBoostRegressor(**params, verbose=0)\n    \n    else:\n        raise ValueError(f\"Unsupported model_type: {model_type}\")\n        \n    seeds = [random.randint(1, 10000) for _ in range(20)] # Seeds for repeated KFold\n\n    score, _ = n_cross_validate(model, X, features, score_col, index_col, cv, seeds, sample_weights=True, verbose=True)\n\n    return score\n\ndef run_optimization(X, features, score_col, index_col, model_type, n_trials=30, cv=None, sample_weights=False):\n    study = optuna.create_study(direction=\"maximize\")\n    study.optimize(lambda trial: objective(trial, model_type, X, features, score_col, index_col, cv, sample_weights), \n                   n_trials=n_trials)\n    \n    print(f\"Best params for {model_type}: {study.best_params}\")\n    print(f\"Best score: {study.best_value}\")\n    return study.best_params","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.699023Z","iopub.execute_input":"2026-10-19T15:06:26.699396Z","iopub.status.idle":"2026-10-19T15:06:26.737579Z","shell.execute_reply.started":"2026-10-19T15:06:26.699363Z","shell.execute_reply":"2026-10-19T15:06:26.736321Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Replace if subsets for features have been selected\n\n# List of manually selected features NOT to include\nexclude = [\n    \"PC_9\", \"PC_12\", \"Fitness_Endurance-Max_Stage\", \"Basic_Demos-Sex\", \"BMI_mean_norm\", \"PC_11\", \n    \"PC_8\", \"FGC_Zones_min\", \"Physical-Systolic_BP\", \"PC_4\", \"BIA-BIA_FMI\", \"BIA-BIA_LST\", \"Physical-Diastolic_BP\", \n    \"BIA-BIA_ECW\", \"Fitness_Endurance-Time_Mins\", \"PAQ_C-PAQ_C_Total\", \"PC_10\", \"BIA-BIA_Fat\", \"FFM_norm\", \"PC_14\", \"PC_7\"\n]\n\nreduced_features = [f for f in features if f not in exclude]\n\nlgb_features = reduced_features\nxgb_features = reduced_features\ncat_features = reduced_features\nprint(len(reduced_features))","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.739359Z","iopub.execute_input":"2026-10-19T15:06:26.739891Z","iopub.status.idle":"2026-10-19T15:06:26.76521Z","shell.execute_reply.started":"2026-10-19T15:06:26.73984Z","shell.execute_reply":"2026-10-19T15:06:26.764029Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Parameters for LGBM, XGB and CatBoost\nlgb_params = {\n    'objective': 'poisson', \n    'n_estimators': 295, \n    'max_depth': 4, \n    'learning_rate': 0.04505693066482616, \n    'subsample': 0.6042489155604022, \n    'colsample_bytree': 0.5021876720502726, \n    'min_data_in_leaf': 100\n}\n\nxgb_params = {\n    'objective': 'reg:tweedie', \n    'num_parallel_tree': 12, \n    'n_estimators': 236, \n    'max_depth': 3, \n    'learning_rate': 0.04223740904479563, \n    'subsample': 0.7157264603586825, \n    'colsample_bytree': 0.7897918901977528, \n    'reg_alpha': 0.005335705058190553, \n    'reg_lambda': 0.0001897435318347022, \n    'tweedie_variance_power': 1.1393958601390142\n}\n\nxgb_params_2 = {\n    'objective': 'reg:tweedie', \n    'num_parallel_tree': 18, \n    'n_estimators': 175, \n    'max_depth': 3, \n    'learning_rate': 0.032620453423049305, \n    'subsample': 0.6155579670568023, \n    'colsample_bytree': 0.5988773292417443, \n    'reg_alpha': 0.0028895066837627205, \n    'reg_lambda': 0.002232531512636924, \n    'tweedie_variance_power': 1.1708678482038286\n}\n\ncat_params = {\n    'objective': 'RMSE', \n    'iterations': 238, \n    'depth': 4, \n    'learning_rate': 0.044523361750173816, \n    'l2_leaf_reg': 0.09301285673435761, \n    'subsample': 0.6902492783438681, \n    'bagging_temperature': 0.3007304771330199, \n    'random_strength': 3.562201626987314, \n    'min_data_in_leaf': 60\n}\n\nxtrees_params = {\n    'n_estimators': 500, \n    'max_depth': 15, \n    'min_samples_leaf': 20, \n    'bootstrap': False\n}","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.7666Z","iopub.execute_input":"2026-10-19T15:06:26.766956Z","iopub.status.idle":"2026-10-19T15:06:26.79099Z","shell.execute_reply.started":"2026-10-19T15:06:26.766913Z","shell.execute_reply":"2026-10-19T15:06:26.789751Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"kf = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=SEED)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.792852Z","iopub.execute_input":"2026-10-19T15:06:26.793367Z","iopub.status.idle":"2026-10-19T15:06:26.81777Z","shell.execute_reply.started":"2026-10-19T15:06:26.793303Z","shell.execute_reply":"2026-10-19T15:06:26.816591Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"if optimize_params:\n    # LightGBM Optimization\n    lgb_params = run_optimization(train, lgb_features, 'PCIAT-PCIAT_Total', 'sii', 'lightgbm', n_trials=n_trials, cv=kf, sample_weights=True)\n\n    # XGBoost Optimization\n    xgb_params = run_optimization(train, xgb_features, 'PCIAT-PCIAT_Total', 'sii', 'xgboost', n_trials=n_trials, cv=kf, sample_weights=True)\n\n    # CatBoost Optimization\n    cat_params = run_optimization(train, cat_features, 'PCIAT-PCIAT_Total', 'sii', 'catboost', n_trials=n_trials, cv=kf, sample_weights=True)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.819037Z","iopub.execute_input":"2026-10-19T15:06:26.819445Z","iopub.status.idle":"2026-10-19T15:06:26.842625Z","shell.execute_reply.started":"2026-10-19T15:06:26.819383Z","shell.execute_reply":"2026-10-19T15:06:26.841352Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Define models\nlgb_model = LGBMRegressor(**lgb_params, random_state=SEED, verbosity=-1)\nxgb_model = XGBRegressor(**xgb_params, random_state=SEED, verbosity=0)\nxgb_model_2 = XGBRegressor(**xgb_params_2, random_state=SEED, verbosity=0)\ncat_model = CatBoostRegressor(**cat_params, random_state=SEED, verbose=0)\nxtrees_model = ExtraTreesRegressor(**xtrees_params, random_state=SEED)\n\nweights = calculate_weights(train['PCIAT-PCIAT_Total'])\n\n# Cross-validate LGBM model\nscore_lgb, oof_lgb, lgb_thresholds = cross_validate(\n    lgb_model, train, lgb_features, 'PCIAT-PCIAT_Total', 'sii', kf, verbose=True, sample_weights=True\n)\n# Fit final model and predict test samples\nlgb_model.fit(train[lgb_features], train['PCIAT-PCIAT_Total'], sample_weight=weights)\ntest_lgb = lgb_model.predict(test[lgb_features])\n\n# Cross-validate XGBoost model\nscore_xgb, oof_xgb, xgb_thresholds = cross_validate(\n    xgb_model, train, xgb_features, 'PCIAT-PCIAT_Total', 'sii', kf, verbose=True, sample_weights=True\n)\n# Fit final model and predict test samples\nxgb_model.fit(train[xgb_features], train['PCIAT-PCIAT_Total'], sample_weight=weights)\ntest_xgb = xgb_model.predict(test[xgb_features])\n\n# Cross-validate XGBoost model 2\nscore_xgb_2, oof_xgb_2, xgb_2_thresholds = cross_validate(\n    xgb_model_2, train, xgb_features, 'PCIAT-PCIAT_Total', 'sii', kf, verbose=True, sample_weights=True\n)\n# Fit final model and predict test samples\nxgb_model_2.fit(train[xgb_features], train['PCIAT-PCIAT_Total'], sample_weight=weights)\ntest_xgb_2 = xgb_model_2.predict(test[xgb_features])\n\n# Cross-validate CatBoost model\nscore_cat, oof_cat, cat_thresholds = cross_validate(\n    cat_model, train, cat_features, 'PCIAT-PCIAT_Total', 'sii', kf, verbose=True, sample_weights=True\n)\n# Fit final model and predict test samples\ncat_model.fit(train[cat_features], train['PCIAT-PCIAT_Total'], sample_weight=weights)\ntest_cat = cat_model.predict(test[cat_features])\n\n# Cross-validate ExtraTreesRegressor model\nscore_xtrees, oof_xtrees, xtrees_thresholds = cross_validate(\n    xtrees_model, train, reduced_features, 'PCIAT-PCIAT_Total', 'sii', kf, verbose=True, sample_weights=True\n)\n# Fit final model and predict test samples\nxtrees_model.fit(train[reduced_features], train['PCIAT-PCIAT_Total'], sample_weight=weights)\ntest_xtrees = xtrees_model.predict(test[reduced_features])\n\n# Print overall mean Kappa score for all models\nprint(f'Overall Mean Kappa: {np.mean([score_lgb, score_xgb, score_cat, score_xtrees])}') # Ensemble score likely higher","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:06:26.845061Z","iopub.execute_input":"2026-10-19T15:06:26.845568Z","iopub.status.idle":"2026-10-19T15:09:18.306072Z","shell.execute_reply.started":"2026-10-19T15:06:26.845518Z","shell.execute_reply":"2026-10-19T15:09:18.304807Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Plot predicted scores against true scores with the base thresholds for converting score to sii\nsns.set_theme(style=\"white\")\nfig, axes = plt.subplots(1, 5, figsize=(14, 6))\n\nscatter1 = axes[0].scatter(train['PCIAT-PCIAT_Total'], oof_lgb, c=train[\"sii\"], cmap=\"autumn\", alpha=0.5)\naxes[0].set_xlabel(\"True Score\")\naxes[0].set_ylabel(\"OOF Predictions - LGBM\")\naxes[0].set_ylim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[0].set_xlim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[0].set_aspect('equal', adjustable='box')\n\nthresholds = [30, 50, 80]\nfor threshold in thresholds:\n    axes[0].axhline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    axes[0].axvline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n\nscatter2 = axes[1].scatter(train['PCIAT-PCIAT_Total'], oof_xgb, c=train[\"sii\"], cmap=\"autumn\", alpha=0.5)\naxes[1].set_xlabel(\"True Score\")\naxes[1].set_ylabel(\"OOF Predictions - XGB\")\naxes[1].set_ylim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[1].set_xlim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[1].set_aspect('equal', adjustable='box')\n\nfor threshold in thresholds:\n    axes[1].axhline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    axes[1].axvline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n\nscatter2 = axes[2].scatter(train['PCIAT-PCIAT_Total'], oof_xgb_2, c=train[\"sii\"], cmap=\"autumn\", alpha=0.5)\naxes[2].set_xlabel(\"True Score\")\naxes[2].set_ylabel(\"OOF Predictions - XGB (2)\")\naxes[2].set_ylim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[2].set_xlim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[2].set_aspect('equal', adjustable='box')\n\nfor threshold in thresholds:\n    axes[2].axhline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    axes[2].axvline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    \nscatter3 = axes[3].scatter(train['PCIAT-PCIAT_Total'], oof_cat, c=train[\"sii\"], cmap=\"autumn\", alpha=0.5)\naxes[3].set_xlabel(\"True Score\")\naxes[3].set_ylabel(\"OOF Predictions - Cat\")\naxes[3].set_ylim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[3].set_xlim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[3].set_aspect('equal', adjustable='box')\n\nfor threshold in thresholds:\n    axes[3].axhline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    axes[3].axvline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    \nscatter3 = axes[4].scatter(train['PCIAT-PCIAT_Total'], oof_xtrees, c=train[\"sii\"], cmap=\"autumn\", alpha=0.5)\naxes[4].set_xlabel(\"True Score\")\naxes[4].set_ylabel(\"OOF Predictions - ExtraTrees\")\naxes[4].set_ylim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[4].set_xlim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[4].set_aspect('equal', adjustable='box')\n\nfor threshold in thresholds:\n    axes[4].axhline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    axes[4].axvline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n\nplt.tight_layout()\nplt.show()\n\nfig, axes = plt.subplots(1,3, figsize=(20,6))\n\nmodel_preds = pd.DataFrame({\n    'lgb': oof_lgb,\n    'xgb': oof_xgb,\n    'xgb2': oof_xgb_2,\n    'cat': oof_cat,\n    'xtrees': oof_xtrees\n})\ncorr_df = model_preds.corr()\nsns.heatmap(corr_df, annot=True, cmap=\"autumn\", cbar=False, linewidths=0.5, linecolor='black', ax=axes[0])\naxes[0].set_title(\"Correlation Between Models\")\n\naxes[1].scatter(\n    train['PCIAT-PCIAT_Total'], np.average(model_preds, axis=1, weights=[0.2, 0.2, 0.3, 0.1, 0.2]), c=train[\"sii\"], cmap=\"autumn\", alpha=0.5\n)\naxes[1].set_xlabel(\"True Score\")\naxes[1].set_ylabel(\"OOF Predictions - Ensemble\")\naxes[1].set_ylim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[1].set_xlim(0,np.max(train['PCIAT-PCIAT_Total']))\naxes[1].set_aspect('equal', adjustable='box')\nfor threshold in thresholds:\n    axes[1].axhline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n    axes[1].axvline(threshold, color=\"blue\", linestyle=\"--\", lw=1)\n\n\nmeta_model = LinearRegression(fit_intercept = False)\nmeta_model.fit(model_preds, train['PCIAT-PCIAT_Total'])\nmeta_model.coef_\nprint(f\"Coefs 'Meta Model': {meta_model.coef_}\")\n\nlgb_thresholds_ens = np.mean(np.array(lgb_thresholds), axis=0)\nxgb_thresholds_ens = np.mean(np.array(xgb_thresholds), axis=0)\nxgb_2_thresholds_ens = np.mean(np.array(xgb_2_thresholds), axis=0)\ncat_thresholds_ens = np.mean(np.array(cat_thresholds), axis=0)\nxtrees_thresholds_ens = np.mean(np.array(xtrees_thresholds), axis=0)\n\nthresholds_df = pd.DataFrame({\n    \"LGB Thresholds\": lgb_thresholds_ens,\n    \"XGB Thresholds\": xgb_thresholds_ens,\n    \"XGB 2 Thresholds\": xgb_2_thresholds_ens,\n    \"Cat Thresholds\": cat_thresholds_ens,\n    \"Xtrees Thresholds\": xtrees_thresholds_ens\n})\n\nsns.heatmap(thresholds_df, annot=True, cmap=\"autumn\", cbar=False, linewidths=0.5, linecolor='black', ax=axes[2])\naxes[2].set_title(\"Ensemble Thresholds Derived from CV\")\naxes[2].set_xticklabels(thresholds_df.columns, rotation=45)  \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:09:18.307973Z","iopub.execute_input":"2026-10-19T15:09:18.308461Z","iopub.status.idle":"2026-10-19T15:09:20.713988Z","shell.execute_reply.started":"2026-10-19T15:09:18.30839Z","shell.execute_reply":"2026-10-19T15:09:20.712823Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# # Showing how sensitive QWK is with changes in threshold\n# scores = []\n# ts = []\n# m = 30\n# for i in tqdm(np.linspace(-1,10, 100)):\n#     thresholds = [m+i, 50, 80]\n#     pred = round_with_thresholds(oof_xgb, thresholds)\n#     score = cohen_kappa_score(train[\"sii\"], pred, weights='quadratic')\n#     ts.append(m+i)\n#     scores.append(score)\n    \n# plt.plot(ts, scores)\n# plt.title(\"Demonstration of QWK sensitivity to changes in threshold 0\")\n# plt.show()","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:09:20.715358Z","iopub.execute_input":"2026-10-19T15:09:20.715745Z","iopub.status.idle":"2026-10-19T15:09:20.721358Z","shell.execute_reply.started":"2026-10-19T15:09:20.71571Z","shell.execute_reply":"2026-10-19T15:09:20.719443Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"lgb_importances = pd.DataFrame({\n    'Feature': lgb_features,\n    'Importance': lgb_model.feature_importances_\n}).sort_values(by='Importance', ascending=False)\n\nxgb_importances = pd.DataFrame({\n    'Feature': xgb_features,\n    'Importance': xgb_model.feature_importances_\n}).sort_values(by='Importance', ascending=False)\n\ncat_importances = pd.DataFrame({\n    'Feature': cat_features,\n    'Importance': cat_model.feature_importances_\n}).sort_values(by='Importance', ascending=False)\n\n# Set the number of features to display\nn_top_features = 40\n\nfig, axes = plt.subplots(1, 3, figsize=(18, 8))\nsns.set_theme(style=\"whitegrid\")\n\nsns.barplot(ax=axes[0], data=lgb_importances.head(n_top_features),\n            x='Importance', y='Feature', palette=\"autumn\")\naxes[0].set_title('LightGBM Top Feature Importances')\n\nsns.barplot(ax=axes[1], data=xgb_importances.head(n_top_features),\n            x='Importance', y='Feature', palette=\"autumn\")\naxes[1].set_title('XGBoost Top Feature Importances')\n\nsns.barplot(ax=axes[2], data=cat_importances.head(n_top_features),\n            x='Importance', y='Feature', palette=\"autumn\")\naxes[2].set_title('CatBoost Top Feature Importances')\n\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:09:20.7231Z","iopub.execute_input":"2026-10-19T15:09:20.723547Z","iopub.status.idle":"2026-10-19T15:09:22.702282Z","shell.execute_reply.started":"2026-10-19T15:09:20.723507Z","shell.execute_reply":"2026-10-19T15:09:22.700845Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Features of low importance in XGB (1), LGBM and Cat\n(set(lgb_importances[-10:][\"Feature\"]) & set(xgb_importances[-10:][\"Feature\"]) & set(cat_importances[-10:][\"Feature\"]))","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:09:22.704018Z","iopub.execute_input":"2026-10-19T15:09:22.704548Z","iopub.status.idle":"2026-10-19T15:09:22.715908Z","shell.execute_reply.started":"2026-10-19T15:09:22.704498Z","shell.execute_reply":"2026-10-19T15:09:22.71428Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Modification 4: Pre-Threshold Continuous Blending & Global QWK Optimisation\n# Hypothesis: Averaging already-rounded integers (0, 1, 2, 3) loses model \n# confidence near class boundaries.\nweights = [0.35, 0.15, 0.20, 0.25, 0.05]\n\nraw_oof_preds = np.array([oof_lgb, oof_xgb, oof_xgb_2, oof_cat, oof_xtrees])\ncontinuous_weighted_oof = np.average(raw_oof_preds, axis=0, weights=weights)\n\nall_thresholds = np.array([\n    lgb_thresholds_ens, \n    xgb_thresholds_ens, \n    xgb_2_thresholds_ens, \n    cat_thresholds_ens, \n    xtrees_thresholds_ens\n])\nglobal_thresholds = np.average(all_thresholds, axis=0, weights=weights)\nprint(f\"Blended Global Thresholds: {global_thresholds}\")\n\nprint(f\"LGBM optimized Kappa: {cohen_kappa_score(train['sii'], round_with_thresholds(oof_lgb, lgb_thresholds_ens), weights='quadratic')}\")\nprint(f\"XGB optimized Kappa: {cohen_kappa_score(train['sii'], round_with_thresholds(oof_xgb, xgb_thresholds_ens), weights='quadratic')}\")\nprint(f\"XGB2 optimized Kappa: {cohen_kappa_score(train['sii'], round_with_thresholds(oof_xgb_2, xgb_2_thresholds_ens), weights='quadratic')}\")\nprint(f\"CAT optimized Kappa: {cohen_kappa_score(train['sii'], round_with_thresholds(oof_cat, cat_thresholds_ens), weights='quadratic')}\")\nprint(f\"ExtraTrees optimized Kappa: {cohen_kappa_score(train['sii'], round_with_thresholds(oof_xtrees, xtrees_thresholds_ens), weights='quadratic')}\")\n\nfinal_oof = round_with_thresholds(continuous_weighted_oof, global_thresholds).astype(int)\nkappa_score = cohen_kappa_score(train[\"sii\"], final_oof, weights='quadratic')\nprint(f\"Continuous-Blended Ensemble Kappa score: {kappa_score}\")\n\n# MODIFICATION 3: Weighted Ensemble Blending + Powell Threshold Optimiser\nif voting:\n    oof_preds = np.array([oof_lgb, oof_xgb, oof_xgb_2, oof_cat, oof_xtrees])\n    voted_oof = stats.mode(oof_preds, axis=0).mode.flatten().astype(int)\n    final_oof = voted_oof\nelse: \n    # Original weights: [0.2, 0.2, 0.3, 0.1, 0.2]\n    # Modified weights: [LGBM, XGB1, XGB2, CatBoost, ExtraTrees]\n    oof_preds = np.array([oof_lgb, oof_xgb, oof_xgb_2, oof_cat, oof_xtrees])\n    weighted_oof = np.average(oof_preds, axis=0, weights=weights)\n    final_oof = np.round(weighted_oof).astype(int)\n\n# Calculate Kappa score for voted OOF predictions\nkappa_score = cohen_kappa_score(train[\"sii\"], final_oof, weights='quadratic')\nprint(f\"Ensemble Kappa score: {kappa_score}\")\n\n# Plot confusion matrix\nconf_matrix = confusion_matrix(train[\"sii\"], final_oof)\nsns.set_theme(style=\"whitegrid\")\nplt.figure(figsize=(8, 6))\nsns.heatmap(conf_matrix, annot=True, fmt=\"d\", cmap=\"autumn\", cbar=False, linewidths=0.5, linecolor='black')\nplt.title('Confusion Matrix', fontsize=16)\nplt.xlabel('Predicted', fontsize=12)\nplt.ylabel('True', fontsize=12)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:09:22.717628Z","iopub.execute_input":"2026-10-19T15:09:22.718113Z","iopub.status.idle":"2026-10-19T15:09:31.91996Z","shell.execute_reply.started":"2026-10-19T15:09:22.718059Z","shell.execute_reply":"2026-10-19T15:09:31.918746Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Apply the optimized thresholds to test predictions\n\n\nif voting:\n    test_preds = np.array([test_lgb, test_xgb, test_xgb_2, test_cat, test_xtrees])\n    voted_test = stats.mode(test_preds, axis=0).mode.flatten().astype(int)\n    final_test = np.round(voted_test).astype(int)\nelse:\n    raw_test_preds = np.array([test_lgb, test_xgb, test_xgb_2, test_cat, test_xtrees])\n    continuous_weighted_test = np.average(raw_test_preds, axis=0, weights=weights)\n    final_test = round_with_thresholds(continuous_weighted_test, global_thresholds).astype(int)\n\nsubmission = pd.read_csv(SUBMISSION_PATH)\nsubmission['sii'] = final_test\n\n# Define the output path for the submission file\nsubmission_path = os.path.join(OUTPUT_PATH, \"submission.csv\")\n\n# Save the submission file\nsubmission.to_csv(submission_path, index=False)","metadata":{"execution":{"iopub.status.busy":"2026-10-19T15:09:31.921582Z","iopub.execute_input":"2026-10-19T15:09:31.921949Z","iopub.status.idle":"2026-10-19T15:09:31.942622Z","shell.execute_reply.started":"2026-10-19T15:09:31.921914Z","shell.execute_reply":"2026-10-19T15:09:31.941243Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}