{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"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":30761,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# <div style=\"color:navy;background-color:lightgreen;padding:1.2%;border-radius:12px 12px;font-size:1em;text-align:center\">📱Child Mind Institute — Problematic Internet Use</div>\n\n# <div style=\"color:yellow;display:inline-block;border-radius:10px;background-color:lightgray;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:darkred;overflow:hidden;font-size:70%;letter-spacing:0.5px;margin:0\"><b> </b>✍️ Description of Notebook -1</p></div>\n\n- In this challenge, the value of **sii (target)** is unknown for **1224 rows** of train.csv file.\n\n- In this notebook, only the missing values ​​of sii for the 1224 rows (mentioned above) are calculated with high accuracy.\n \n- First, \"Features Imputation\" is temporarily performed for the train.csv file, and then the train.csv file is separated into two parts. The first part contains 2736 rows and the value of sii is known in it, and therefore it is the **train part** of calculations. The second part contains 1224 rows in which the value of sii is uncertain and is the calculation **test part**.\n\n- In the next step, regression is performed using LGBM and sii values are calculated with high accuracy.\n\n- In the last step, only the sii column of the train.csv file is completed using the calculated values, and then it is sent as an output with the name **train_sii.csv**.\n\n- You can use the **train_sii.csv** file instead of train.csv in your notebooks, and in this way the information of 1224 rows will be usable.\n\n- **Good luck**.","metadata":{}},{"cell_type":"markdown","source":"# <span style=\"color:darkred; align-items: center;\">၊၊||၊ Relating Physical Activity to Problematic Internet Use</span>\n\n<p style=\"border-bottom: 15px solid darkcyan\"></p>","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport polars as pl\nimport os, time, copy \nimport gc, json, random\nfrom pathlib import Path\n\nimport itertools\nfrom scipy import stats\nfrom scipy.optimize import minimize\nfrom scipy.spatial.distance import cdist\n\nimport seaborn as sns\nfrom matplotlib import colors\nimport matplotlib.pyplot as plt\nfrom colorama import Style, Fore\n%matplotlib inline\n\n# ............................................\nimport warnings\nwarnings.filterwarnings('ignore')\n!ls ../input/*","metadata":{"_kg_hide-input":false,"_kg_hide-output":false,"execution":{"iopub.status.busy":"2024-11-19T15:10:22.666494Z","iopub.execute_input":"2024-11-19T15:10:22.666921Z","iopub.status.idle":"2024-11-19T15:10:25.679281Z","shell.execute_reply.started":"2024-11-19T15:10:22.666883Z","shell.execute_reply":"2024-11-19T15:10:25.67758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 15px solid darkcyan\"></p>","metadata":{}},{"cell_type":"code","source":"dtrain = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv', index_col='id')\ndtest = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv', index_col='id')\nsub_sample = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/sample_submission.csv')\n\ndtrain_col = dtrain.columns.tolist()\ndtest_col = dtest.columns.tolist()\n\ndtrain.shape, dtest.shape, sub_sample.shape","metadata":{"_kg_hide-output":false,"execution":{"iopub.status.busy":"2024-11-19T15:10:25.682198Z","iopub.execute_input":"2024-11-19T15:10:25.682975Z","iopub.status.idle":"2024-11-19T15:10:25.782008Z","shell.execute_reply.started":"2024-11-19T15:10:25.682938Z","shell.execute_reply":"2024-11-19T15:10:25.780701Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 📱Duplicates\n\n- We see \"Duplicates\" in the \"Train\" file. But because there is another file called \"series_train.parquet\", we can't delete duplicate rows at the moment.","metadata":{}},{"cell_type":"code","source":"# print('Duplicates in dtrain:', dtrain.duplicated().sum())\n# print('Duplicates in dtest:', dtest.duplicated().sum())\n\n# dtrain.drop_duplicates(inplace=True)\n# dtrain.shape, dtest.shape","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:25.782982Z","iopub.execute_input":"2024-11-19T15:10:25.783251Z","iopub.status.idle":"2024-11-19T15:10:25.788176Z","shell.execute_reply.started":"2024-11-19T15:10:25.783225Z","shell.execute_reply":"2024-11-19T15:10:25.786936Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 📱Missing Values","metadata":{}},{"cell_type":"code","source":"train = dtrain.copy()\ntest = dtest.copy()\n\ntrain_col = train.columns.tolist()\ntest_col = test.columns.tolist()\n\nmissing_values = train.isnull().mean() * 100\nmissing_values.plot(kind='barh', figsize=(10, 25), color=['lightgreen','violet','skyblue','pink'])\n\nplt.title('Percentage of Missing Values', fontsize=18, color='gray')\nplt.xlabel('Percentage', fontsize=18, color='gray')\nplt.ylabel('Features', fontsize=18, color='gray')\nplt.gca().set_facecolor('lightcyan')\nplt.xticks(rotation=0)\nplt.show();","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:25.791609Z","iopub.execute_input":"2024-11-19T15:10:25.792123Z","iopub.status.idle":"2024-11-19T15:10:26.902158Z","shell.execute_reply.started":"2024-11-19T15:10:25.792077Z","shell.execute_reply":"2024-11-19T15:10:26.900711Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 📱Features","metadata":{}},{"cell_type":"code","source":"features = test_col.copy()\nprint('Number of Features :', len(features))\n\n# Numerical Features\nnum_features = [f for f in features if train[f].dtype==float or f=='Basic_Demos-Age']\nprint('The number of numerical features :', len(num_features))\n\n# Categorical Features\ncat_features = [f for f in features if f not in num_features]\nprint('The number of categorical features :', len(cat_features))\n\n# Target Features\ntarget_col = [f for f in train_col if f not in test_col]\nprint('The number of target features :', len(target_col), '\\n')\n\n# Unique Number\n# pd.set_option('display.max_rows', 500)\npd.DataFrame(data= {'Unique number in train': train[features].nunique(), \n                    'Unique number in test': test[features].nunique()}).sort_values(by=['Unique number in train']) ","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:26.903858Z","iopub.execute_input":"2024-11-19T15:10:26.904245Z","iopub.status.idle":"2024-11-19T15:10:26.955146Z","shell.execute_reply.started":"2024-11-19T15:10:26.904212Z","shell.execute_reply":"2024-11-19T15:10:26.953899Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <span style=\"color:darkcyan;\">1 ၊၊||၊ Features Imputation</span>\n\n<p style=\"border-bottom: 50px solid lightgreen\"></p>\n\n<p style=\"border-bottom: 15px solid darkcyan\"></p>\n\n- For numerical features, the **\"KNNImputer\"** library is used, and for categorical features, a new category called **\"unknown\"** is created for missing values.","metadata":{}},{"cell_type":"code","source":"from sklearn.impute import KNNImputer\nimputer_num = KNNImputer(n_neighbors=2, weights=\"uniform\")\n\n# ....................................................................................\nnum_train = [f for f in train_col if train[f].dtype==float or f=='Basic_Demos-Age']\nfit_train = [f for f in num_train if f!='sii']\n\nimputer_num.fit(train[fit_train])\ntrain[fit_train] = imputer_num.transform(train[fit_train])\n\ncat_train = [f for f in train_col if f not in fit_train and f!='sii']\n\nfor col in cat_train:\n    train[col] = train[col].fillna('unknown')\n    train[col] = train[col].astype('category')\n    \n# ....................................................................................\ntrain.isnull().mean() * 100\n","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:26.956477Z","iopub.execute_input":"2024-11-19T15:10:26.956865Z","iopub.status.idle":"2024-11-19T15:10:35.149787Z","shell.execute_reply.started":"2024-11-19T15:10:26.956802Z","shell.execute_reply":"2024-11-19T15:10:35.148618Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <span style=\"color:darkcyan;\">2 ၊၊||၊ Target(sii) Imputation Via LGBM</span>\n\n<p style=\"border-bottom: 50px solid lightgreen\"></p>\n\n<p style=\"border-bottom: 15px solid darkcyan\"></p>\n\n- For the imputation of the **sii** (challenge target) column, the regression is done separately via **LightGBM**.","metadata":{}},{"cell_type":"markdown","source":"## <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:darkcyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:white;overflow:hidden;font-size:85%;letter-spacing:0.5px;margin:0\"><b> </b> ✨ Pandas get_dummies & Preprocessing - Scaler </p></div>\n","metadata":{}},{"cell_type":"code","source":"train_code = pd.get_dummies(train, columns=cat_train)\n\n# ......................................................................\n# StandardScaler\nfrom sklearn.preprocessing import StandardScaler\n\n# scaler = StandardScaler()\n# train_code[fit_train] = scaler.fit_transform(train_code[fit_train])\n\n# ......................................................................\n# MinMaxScaler\nfrom sklearn.preprocessing import MinMaxScaler\n\n# scaler = MinMaxScaler()\n# train_code[fit_train] = scaler.fit_transform(train_code[fit_train])\n\n# ......................................................................\ntrain_code.shape\n","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:35.151243Z","iopub.execute_input":"2024-11-19T15:10:35.151559Z","iopub.status.idle":"2024-11-19T15:10:35.180463Z","shell.execute_reply.started":"2024-11-19T15:10:35.151525Z","shell.execute_reply":"2024-11-19T15:10:35.179246Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:darkcyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:white;overflow:hidden;font-size:85%;letter-spacing:0.5px;margin:0\"><b> </b> ✨ sii - Data Setting </p></div>\n\n- Please note that we want to calculate unknown values for column **sii**. So we only use the **train_code** file and ignore the test_code file for now.","metadata":{}},{"cell_type":"code","source":"train_sii = train_code[train_code['sii'].notna()].copy()\ntest_sii = train_code[train_code['sii'].isna()].copy()\n\ny_sii  = train_sii['sii'].copy()\nX_sii  = train_sii.drop(columns=['sii']).copy()\nXX_sii = test_sii.drop(columns=['sii']).copy()\n\ny_sii.shape, X_sii.shape, XX_sii.shape","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:35.181986Z","iopub.execute_input":"2024-11-19T15:10:35.182306Z","iopub.status.idle":"2024-11-19T15:10:35.201471Z","shell.execute_reply.started":"2024-11-19T15:10:35.182274Z","shell.execute_reply":"2024-11-19T15:10:35.20048Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:darkcyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:white;overflow:hidden;font-size:85%;letter-spacing:0.5px;margin:0\"><b> </b> ✨ Auxiliary Functions </p></div>","metadata":{}},{"cell_type":"code","source":"# Rounding using thresholds\n# Raw Predictions: pred_raw\n# Rounded Predictions: pred\n# Thresholds: t\n\ndef round_t(pred_raw, t):\n    pred = np.where(pred_raw < t[0], 0, np.where(pred_raw < t[1], 1, np.where(pred_raw < t[2], 2, 3)))\n    return pred\n\ndef qw_kappa(y_true, pred):\n    return -cohen_kappa_score(y_true, pred, weights='quadratic')\n\n# Thanks to: @ambrosm\ndef fun(t, y_true, pred_raw):\n    pred = round_t(pred_raw, t)\n    return -cohen_kappa_score(y_true, pred, weights='quadratic')\n\ndef optimized_thresholds(fun, y_true, pred_raw):\n    res = minimize(fun, x0=[0.5, 1.5, 2.5], args=(y_true, pred_raw), method='Nelder-Mead')\n    assert res.success\n    return res.x.round(2) # optimized_thresholds\n\nt = [0.60, 1.07, 2.52] # Optimized Thresholds (initial)","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:35.202882Z","iopub.execute_input":"2024-11-19T15:10:35.20324Z","iopub.status.idle":"2024-11-19T15:10:35.211319Z","shell.execute_reply.started":"2024-11-19T15:10:35.203209Z","shell.execute_reply":"2024-11-19T15:10:35.209941Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:darkcyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:white;overflow:hidden;font-size:85%;letter-spacing:0.5px;margin:0\"><b> </b> ✨ Imputation Via LightGBM </p></div>","metadata":{}},{"cell_type":"code","source":"import lightgbm as lgb\nfrom bayes_opt import BayesianOptimization\nfrom sklearn.neighbors import KNeighborsRegressor\n\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.model_selection import RandomizedSearchCV\n\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.model_selection import StratifiedKFold\nfrom sklearn.model_selection import train_test_split\n\nfrom sklearn.model_selection import RepeatedKFold\nfrom sklearn.model_selection import RepeatedStratifiedKFold\n\nfrom sklearn.metrics import log_loss\nfrom sklearn.metrics import cohen_kappa_score\nfrom sklearn.metrics import ConfusionMatrixDisplay","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2024-11-19T15:10:35.216092Z","iopub.execute_input":"2024-11-19T15:10:35.216487Z","iopub.status.idle":"2024-11-19T15:10:36.449539Z","shell.execute_reply.started":"2024-11-19T15:10:35.216454Z","shell.execute_reply":"2024-11-19T15:10:36.448321Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### ✨ Hyperparameters","metadata":{}},{"cell_type":"code","source":"# ::::::::::::::::::::::::::::::::::::::::::::::::\nlgbm_params1 = {  \n    \n    'metric'              :'rmse',\n    'objective'           :'regression',\n    'learning_rate'       : 0.04,\n    'max_depth'           : 12,\n    'num_leaves'          : 59,\n    'subsample'           : 0.70,\n    'colsample_bytree'    : 0.50,\n    'min_child_weight'    : 12, \n    'min_child_samples'   : 14,    \n    'reg_alpha'           : 0.23,\n    'reg_lambda'          : 0.36,\n}\n\n# ::::::::::::::::::::::::::::::::::::::::::::::::\nlgbm_params2 = {  \n    \n    'metric'              :'rmse',\n    'objective'           :'regression',\n    'learning_rate'       : 0.05,\n    'max_depth'           : 9,\n    'num_leaves'          : 59,\n    'subsample'           : 0.80,\n    'colsample_bytree'    : 0.50,\n    'min_child_weight'    : 12, \n    'min_child_samples'   : 14,  \n    'reg_alpha'           : 0.23,\n    'reg_lambda'          : 0.36,\n}\n\n# ::::::::::::::::::::::::::::::::::::::::::::::::\nlgbm_params3 = {  \n    \n    'metric'              :'rmse',\n    'objective'           :'regression',\n    'learning_rate'       : 0.046,\n    'max_depth'           : 12,\n    'num_leaves'          : 478,\n    'min_data_in_leaf'    : 13,\n    'feature_fraction'    : 0.893,\n    'bagging_fraction'    : 0.784,\n    'bagging_freq'        : 4,\n    'lambda_l1'           : 10, \n    'lambda_l2'           : 0.01, \n}\n                                                       \n# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\n\nmodel1 = lgb.LGBMRegressor(**lgbm_params1, n_estimators=10000, random_state=421, early_stopping_rounds=350, verbose=-1)\n\nmodel2 = lgb.LGBMRegressor(**lgbm_params2, n_estimators=10000, random_state=422, early_stopping_rounds=350, verbose=-1)\n\nmodel3 = lgb.LGBMRegressor(**lgbm_params3, n_estimators=10000, random_state=423, early_stopping_rounds=350, verbose=-1)\n\n# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\n\nmodel_list = [model1, model2, model3]\n","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:36.451161Z","iopub.execute_input":"2024-11-19T15:10:36.451758Z","iopub.status.idle":"2024-11-19T15:10:36.461866Z","shell.execute_reply.started":"2024-11-19T15:10:36.451723Z","shell.execute_reply":"2024-11-19T15:10:36.460488Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### ✨ Cross-validation","metadata":{}},{"cell_type":"code","source":"score_mean = 0\npred = np.zeros(len(XX_sii))\nrkf = RepeatedKFold(n_splits=3, n_repeats=6, random_state=424)\n\nfor fold, (train_idx, valid_idx) in enumerate(rkf.split(X_sii)):  \n    X_train, y_train = X_sii.iloc[train_idx], y_sii.iloc[train_idx]\n    X_valid, y_valid = X_sii.iloc[valid_idx], y_sii.iloc[valid_idx]  \n\n    print(f'\\n:::::::::::::::::: Fold ~ {fold+1} :::::::::::::::::::')\n    N = random.randrange(4) \n         \n    if (N==0):\n        print('LGBMRegressor - 1')\n        model1.fit(X_train, y_train,             \n                  eval_set=[(X_valid, y_valid)])        \n        oof = model1.predict(X_valid)\n        prd = model1.predict(XX_sii)\n \n    if (N==1):\n        print('LGBMRegressor - 2')\n        model2.fit(X_train, y_train,             \n                  eval_set=[(X_valid, y_valid)])      \n        oof = model2.predict(X_valid)\n        prd = model2.predict(XX_sii)\n \n    if (N==2 or N==3):\n        print('LGBMRegressor - 3')\n        model3.fit(X_train, y_train,             \n                  eval_set=[(X_valid, y_valid)])        \n        oof = model3.predict(X_valid)\n        prd = model3.predict(XX_sii) \n          \n    score = cohen_kappa_score(y_valid, np.round(oof), weights='quadratic')\n    print('SCORE:', round(score, 4))\n                              \n    score_mean += score \n    pred += prd\n    \nscore_mean = score_mean / rkf.get_n_splits(X_sii, y_sii)    \npreds_sii_raw = pred / rkf.get_n_splits(X_sii, y_sii)\npreds_sii = np.round(preds_sii_raw)\n\nprint('\\n', '='* 40)\nprint(' .'* 20)\nprint(' SCORE(mean):', score_mean)\nprint(' .'* 20)\nprint('='* 40, '\\n')","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:10:36.463368Z","iopub.execute_input":"2024-11-19T15:10:36.463739Z","iopub.status.idle":"2024-11-19T15:11:26.608621Z","shell.execute_reply.started":"2024-11-19T15:10:36.463698Z","shell.execute_reply":"2024-11-19T15:11:26.607476Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.set()\nplt.figure(figsize=(6, 3))\nplt.hist(preds_sii_raw, bins=50)\n\nplt.gca().set_facecolor('lightcyan')\nplt.suptitle('Prediction-raw Histogram', y=0.96, fontsize=16, c='navy')\n\nround(min(preds_sii_raw), 3), round(max(preds_sii_raw), 3)","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:11:26.610143Z","iopub.execute_input":"2024-11-19T15:11:26.610478Z","iopub.status.idle":"2024-11-19T15:11:27.039615Z","shell.execute_reply.started":"2024-11-19T15:11:26.610447Z","shell.execute_reply":"2024-11-19T15:11:27.038476Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.set()\nplt.figure(figsize=(6, 3))\nplt.hist(preds_sii, bins=25)\n\nplt.gca().set_facecolor('lightgreen')\nplt.suptitle('Prediction Histogram', y=0.96, fontsize=16, c='navy')\n\nmin(preds_sii), max(preds_sii)","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:11:27.041146Z","iopub.execute_input":"2024-11-19T15:11:27.04149Z","iopub.status.idle":"2024-11-19T15:11:27.418213Z","shell.execute_reply.started":"2024-11-19T15:11:27.041456Z","shell.execute_reply":"2024-11-19T15:11:27.417069Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:darkcyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:white;overflow:hidden;font-size:85%;letter-spacing:0.5px;margin:0\"><b> </b> ✨ Feature Importance </p></div>","metadata":{}},{"cell_type":"code","source":"from lightgbm import plot_importance   \n\nmodel0 = lgb.LGBMRegressor(**lgbm_params1, verbose=-1)\nmodel0.fit(X_sii, y_sii)","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:11:27.419854Z","iopub.execute_input":"2024-11-19T15:11:27.420325Z","iopub.status.idle":"2024-11-19T15:11:27.747891Z","shell.execute_reply.started":"2024-11-19T15:11:27.420263Z","shell.execute_reply":"2024-11-19T15:11:27.746884Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_importance(model0, figsize=(12, 15), color=['lightgreen','violet','skyblue','pink'], height=0.6, max_num_features=50,\n                title='LightGBM - Feature importance', xlabel='Value', ylabel='Name Feature');\n\nplt.gca().set_facecolor('lightyellow')","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:14:05.071051Z","iopub.execute_input":"2024-11-19T15:14:05.071509Z","iopub.status.idle":"2024-11-19T15:14:06.215122Z","shell.execute_reply.started":"2024-11-19T15:14:05.071474Z","shell.execute_reply":"2024-11-19T15:14:06.213794Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <span style=\"color:darkcyan;\">3 ၊၊||၊ Results Setting</span>\n\n<p style=\"border-bottom: 50px solid lightgreen\"></p>\n\n<p style=\"border-bottom: 15px solid darkcyan\"></p>\n\n- In this notebook, we found the missing values for sii with high accuracy. So we can use all rows of train file for main calculations.","metadata":{}},{"cell_type":"code","source":"X_sii['sii'] = y_sii.copy()\nXX_sii['sii'] = preds_sii.copy()\n\n# .................................................\ntrain_imput = pd.concat([X_sii, XX_sii], axis=0)\ntrain_imput.sort_index(axis=0, inplace=True)\n\n# .................................................\ntrain_sii = dtrain.copy()\ntrain_sii['sii'] = train_imput['sii']\n\ntrain_imput.shape, train_sii.shape","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:11:28.885262Z","iopub.execute_input":"2024-11-19T15:11:28.885718Z","iopub.status.idle":"2024-11-19T15:11:28.907324Z","shell.execute_reply.started":"2024-11-19T15:11:28.88567Z","shell.execute_reply":"2024-11-19T15:11:28.905996Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 🍀 Output | train_sii |","metadata":{}},{"cell_type":"code","source":"train_sii.to_csv('train_sii.csv', index=True)\n!ls","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:11:28.908823Z","iopub.execute_input":"2024-11-19T15:11:28.909194Z","iopub.status.idle":"2024-11-19T15:11:30.303866Z","shell.execute_reply.started":"2024-11-19T15:11:28.909162Z","shell.execute_reply":"2024-11-19T15:11:30.302437Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_sii.isnull().mean() * 100","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:11:30.30603Z","iopub.execute_input":"2024-11-19T15:11:30.306539Z","iopub.status.idle":"2024-11-19T15:11:30.327016Z","shell.execute_reply.started":"2024-11-19T15:11:30.306486Z","shell.execute_reply":"2024-11-19T15:11:30.325677Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 🍀 Compare | dtrain Vs. train_sii |","metadata":{}},{"cell_type":"code","source":"pd.DataFrame(data= {'Before | Unique number in dtrain[sii] ': dtrain['sii'].value_counts(), \n                    'After | Unique number in train_sii[sii] ': train_sii['sii'].value_counts()})","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:11:30.328499Z","iopub.execute_input":"2024-11-19T15:11:30.328877Z","iopub.status.idle":"2024-11-19T15:11:30.350084Z","shell.execute_reply.started":"2024-11-19T15:11:30.328812Z","shell.execute_reply":"2024-11-19T15:11:30.348648Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 🍀 Features Correlation | train_imput |","metadata":{}},{"cell_type":"code","source":"corr = train_imput.corr(numeric_only=True).round(2)\ncorr.style.background_gradient(cmap='Pastel2')","metadata":{"execution":{"iopub.status.busy":"2024-11-19T15:24:44.523883Z","iopub.execute_input":"2024-11-19T15:24:44.524327Z","iopub.status.idle":"2024-11-19T15:24:45.395657Z","shell.execute_reply.started":"2024-11-19T15:24:44.524293Z","shell.execute_reply":"2024-11-19T15:24:45.394513Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 50px solid lightgreen\"></p>\n\n<p style=\"border-bottom: 15px solid darkcyan\"></p>","metadata":{}}]}