{"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"},{"sourceId":10140700,"sourceType":"datasetVersion","datasetId":6258852}],"dockerImageVersionId":30805,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip -q install /kaggle/input/pytorchtabnet/pytorch_tabnet-4.1.0-py3-none-any.whl","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:10.307933Z","iopub.execute_input":"2024-12-10T07:42:10.308360Z","iopub.status.idle":"2024-12-10T07:42:53.216031Z","shell.execute_reply.started":"2024-12-10T07:42:10.308304Z","shell.execute_reply":"2024-12-10T07:42:53.214726Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.gridspec as gridspec\nimport seaborn as sns\nimport warnings\nimport os\nimport torch.nn as nn\nfrom concurrent.futures import ThreadPoolExecutor\nfrom tqdm import tqdm\nimport torch\nimport torch.optim as optim\nfrom pytorch_tabnet.tab_model import TabNetRegressor\nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import StandardScaler\nfrom pytorch_tabnet.tab_model import TabNetRegressor\nfrom sklearn.metrics import cohen_kappa_score\nfrom sklearn.metrics import accuracy_score\nfrom pytorch_tabnet.tab_model import TabNetClassifier\nfrom pytorch_tabnet.metrics import Metric","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:02:54.291013Z","iopub.execute_input":"2024-12-10T08:02:54.291478Z","iopub.status.idle":"2024-12-10T08:02:54.297691Z","shell.execute_reply.started":"2024-12-10T08:02:54.291437Z","shell.execute_reply":"2024-12-10T08:02:54.296636Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"warnings.filterwarnings('ignore', category=FutureWarning)\n\nsns.set(style=\"whitegrid\")\n%matplotlib inline","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:09.597541Z","iopub.execute_input":"2024-12-10T07:42:09.598087Z","iopub.status.idle":"2024-12-10T07:42:09.606626Z","shell.execute_reply.started":"2024-12-10T07:42:09.598038Z","shell.execute_reply":"2024-12-10T07:42:09.605129Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv')\ntest = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv')\ndata_dict = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/data_dictionary.csv')\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:09.609533Z","iopub.execute_input":"2024-12-10T07:42:09.609981Z","iopub.status.idle":"2024-12-10T07:42:09.733246Z","shell.execute_reply.started":"2024-12-10T07:42:09.609934Z","shell.execute_reply":"2024-12-10T07:42:09.732138Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"<h2>Time series aggregation</h2>","metadata":{}},{"cell_type":"code","source":"def process_file(filename, dirname):\n    df = pd.read_parquet(os.path.join(dirname, filename, 'part-0.parquet'))\n    df.drop('step', axis=1, inplace=True)\n    return df.describe().values.reshape(-1), filename.split('=')[1]\n\ndef load_time_series(dirname) -> pd.DataFrame:\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    return df\n\n\nclass AutoEncoder(nn.Module):\n    def __init__(self, input_dim, encoding_dim):\n        super(AutoEncoder, self).__init__()\n        self.encoder = nn.Sequential(\n            nn.Linear(input_dim, encoding_dim*3),\n            nn.ReLU(),\n            nn.Linear(encoding_dim*3, encoding_dim*2),\n            nn.ReLU(),\n            nn.Linear(encoding_dim*2, encoding_dim),\n            nn.ReLU()\n        )\n        self.decoder = nn.Sequential(\n            nn.Linear(encoding_dim, input_dim*2),\n            nn.ReLU(),\n            nn.Linear(input_dim*2, input_dim*3),\n            nn.ReLU(),\n            nn.Linear(input_dim*3, input_dim),\n            nn.Sigmoid()\n        )\n        \n    def forward(self, x):\n        encoded = self.encoder(x)\n        decoded = self.decoder(encoded)\n        return decoded\n\n\ndef perform_autoencoder(df, encoding_dim=50, epochs=50, batch_size=32):\n    scaler = StandardScaler()\n    df_scaled = scaler.fit_transform(df)\n    \n    data_tensor = torch.FloatTensor(df_scaled)\n    \n    input_dim = data_tensor.shape[1]\n    autoencoder = AutoEncoder(input_dim, encoding_dim)\n    \n    criterion = nn.MSELoss()\n    optimizer = optim.Adam(autoencoder.parameters())\n    \n    for epoch in range(epochs):\n        for i in range(0, len(data_tensor), batch_size):\n            batch = data_tensor[i : i + batch_size]\n            optimizer.zero_grad()\n            reconstructed = autoencoder(batch)\n            loss = criterion(reconstructed, batch)\n            loss.backward()\n            optimizer.step()\n            \n        if (epoch + 1) % 10 == 0:\n            print(f'Epoch [{epoch + 1}/{epochs}], Loss: {loss.item():.4f}]')\n                 \n    with torch.no_grad():\n        encoded_data = autoencoder.encoder(data_tensor).numpy()\n        \n    df_encoded = pd.DataFrame(encoded_data, columns=[f'Enc_{i + 1}' for i in range(encoded_data.shape[1])])\n    \n    return df_encoded","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:00:21.281089Z","iopub.execute_input":"2024-12-10T08:00:21.281482Z","iopub.status.idle":"2024-12-10T08:00:21.294934Z","shell.execute_reply.started":"2024-12-10T08:00:21.281446Z","shell.execute_reply":"2024-12-10T08:00:21.293961Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_ts = load_time_series(\"/kaggle/input/child-mind-institute-problematic-internet-use/series_train.parquet\")\ntest_ts = load_time_series(\"/kaggle/input/child-mind-institute-problematic-internet-use/series_test.parquet\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:00:24.849737Z","iopub.execute_input":"2024-12-10T08:00:24.850502Z","iopub.status.idle":"2024-12-10T08:01:42.783048Z","shell.execute_reply.started":"2024-12-10T08:00:24.850465Z","shell.execute_reply":"2024-12-10T08:01:42.782006Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_train = train_ts.drop('id', axis=1)\ndf_test = test_ts.drop('id', axis=1)\n\ntrain_ts_encoded = perform_autoencoder(df_train, encoding_dim=60, epochs=100, batch_size=32)\ntest_ts_encoded = perform_autoencoder(df_test, encoding_dim=60, epochs=100, batch_size=32)\n\ntime_series_cols = train_ts_encoded.columns.tolist()\ntrain_ts_encoded[\"id\"]=train_ts[\"id\"]\ntest_ts_encoded['id']=test_ts[\"id\"]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:03:00.418648Z","iopub.execute_input":"2024-12-10T08:03:00.419507Z","iopub.status.idle":"2024-12-10T08:03:10.704302Z","shell.execute_reply.started":"2024-12-10T08:03:00.419469Z","shell.execute_reply":"2024-12-10T08:03:10.703120Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train = pd.merge(train, train_ts_encoded, how=\"right\", on='id')\ntest = pd.merge(test, test_ts_encoded, how=\"left\", on='id')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:24:04.237158Z","iopub.execute_input":"2024-12-10T08:24:04.237823Z","iopub.status.idle":"2024-12-10T08:24:04.255874Z","shell.execute_reply.started":"2024-12-10T08:24:04.237784Z","shell.execute_reply":"2024-12-10T08:24:04.254658Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## FIRST, I WILL TURN SII INTO VERY RELIABLE SII AND PREPROCESS TO MAKE TEST AND TRAIN HAVE THE SAME NUMBER OF FEATURES\nby remove every samples which has null for sii or any samples \nand see how many samplers i have after. ","metadata":{}},{"cell_type":"code","source":"train_cols = set(train.columns)\ntest_cols = set(test.columns)\ncolumns_not_in_test = sorted(list(train_cols - test_cols))\ndata_dict[data_dict['Field'].isin(columns_not_in_test)]\nprint(columns_not_in_test)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:24:09.125827Z","iopub.execute_input":"2024-12-10T08:24:09.126243Z","iopub.status.idle":"2024-12-10T08:24:09.133512Z","shell.execute_reply.started":"2024-12-10T08:24:09.126206Z","shell.execute_reply":"2024-12-10T08:24:09.132487Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"reliable_train = train.dropna(subset=columns_not_in_test)\nreliable_train = reliable_train.reset_index(drop=True)\n    ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:24:17.931947Z","iopub.execute_input":"2024-12-10T08:24:17.932347Z","iopub.status.idle":"2024-12-10T08:24:17.942383Z","shell.execute_reply.started":"2024-12-10T08:24:17.932311Z","shell.execute_reply":"2024-12-10T08:24:17.941065Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"reliable_train","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T08:24:19.597324Z","iopub.execute_input":"2024-12-10T08:24:19.597903Z","iopub.status.idle":"2024-12-10T08:24:19.626380Z","shell.execute_reply.started":"2024-12-10T08:24:19.597861Z","shell.execute_reply":"2024-12-10T08:24:19.625142Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"reliable_labels = reliable_train[columns_not_in_test]\nreliable_labels","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:09.863318Z","iopub.execute_input":"2024-12-10T07:42:09.863711Z","iopub.status.idle":"2024-12-10T07:42:09.917552Z","shell.execute_reply.started":"2024-12-10T07:42:09.863667Z","shell.execute_reply":"2024-12-10T07:42:09.916555Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"reliable_train_wo_labels = reliable_train.drop(columns_not_in_test, axis = 1)\nreliable_train_wo_labels","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:09.918653Z","iopub.execute_input":"2024-12-10T07:42:09.919049Z","iopub.status.idle":"2024-12-10T07:42:09.961730Z","shell.execute_reply.started":"2024-12-10T07:42:09.918994Z","shell.execute_reply":"2024-12-10T07:42:09.960776Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### ENCODING CLASSICAL FEATURES INTO NUMERICAL ONES","metadata":{}},{"cell_type":"code","source":"# for short, i will call them new_train\nnew_train = reliable_train_wo_labels","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:09.966241Z","iopub.execute_input":"2024-12-10T07:42:09.966651Z","iopub.status.idle":"2024-12-10T07:42:09.971243Z","shell.execute_reply.started":"2024-12-10T07:42:09.966607Z","shell.execute_reply":"2024-12-10T07:42:09.970323Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"object_features = new_train.select_dtypes(include=['object']).columns.tolist()\nobject_features","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:09.972247Z","iopub.execute_input":"2024-12-10T07:42:09.972623Z","iopub.status.idle":"2024-12-10T07:42:09.990971Z","shell.execute_reply.started":"2024-12-10T07:42:09.972558Z","shell.execute_reply":"2024-12-10T07:42:09.989311Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def encode_seasonal_data(train_data, test_data, features_to_encode):\n    # Copy input data to avoid modifying originals\n    encoded_train = train_data.copy()\n    encoded_test = test_data.copy()\n    \n    # Process each feature\n    for feature in features_to_encode:\n        # Initialize encoder\n        encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)\n        \n        # Fit and transform training data\n        train_encoded = encoder.fit_transform(encoded_train[[feature]])\n        # Transform test data using same encoder\n        test_encoded = encoder.transform(encoded_test[[feature]])\n        \n        # Get feature names\n        column_names = [f\"{feature}_{cat}\" for cat in encoder.categories_[0]]\n        \n        # Create DataFrames for encoded features\n        train_encoded_df = pd.DataFrame(train_encoded,\n                                      columns=column_names,\n                                      index=encoded_train.index)\n        test_encoded_df = pd.DataFrame(test_encoded,\n                                     columns=column_names,\n                                     index=encoded_test.index)\n        \n        # Update datasets\n        encoded_train = pd.concat([encoded_train.drop(columns=[feature]), \n                                 train_encoded_df], axis=1)\n        encoded_test = pd.concat([encoded_test.drop(columns=[feature]), \n                                test_encoded_df], axis=1)\n    \n    return encoded_train, encoded_test","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:09.992120Z","iopub.execute_input":"2024-12-10T07:42:09.992470Z","iopub.status.idle":"2024-12-10T07:42:10.101465Z","shell.execute_reply.started":"2024-12-10T07:42:09.992430Z","shell.execute_reply":"2024-12-10T07:42:10.100350Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"features_to_encode = object_features[1:]\nfeatures_to_encode","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:10.102942Z","iopub.execute_input":"2024-12-10T07:42:10.103328Z","iopub.status.idle":"2024-12-10T07:42:10.110636Z","shell.execute_reply.started":"2024-12-10T07:42:10.103286Z","shell.execute_reply":"2024-12-10T07:42:10.109495Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"encoded_train, encoded_test =  encode_seasonal_data(new_train, test, features_to_encode)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:10.111743Z","iopub.execute_input":"2024-12-10T07:42:10.112157Z","iopub.status.idle":"2024-12-10T07:42:10.207915Z","shell.execute_reply.started":"2024-12-10T07:42:10.112110Z","shell.execute_reply":"2024-12-10T07:42:10.206491Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(encoded_train.shape)\nprint(encoded_test.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:10.210590Z","iopub.execute_input":"2024-12-10T07:42:10.211036Z","iopub.status.idle":"2024-12-10T07:42:10.217753Z","shell.execute_reply.started":"2024-12-10T07:42:10.210986Z","shell.execute_reply":"2024-12-10T07:42:10.216037Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"encoded_train = encoded_train.drop('id', axis = 1)\nencoded_test = encoded_test.drop('id', axis = 1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:10.219242Z","iopub.execute_input":"2024-12-10T07:42:10.220319Z","iopub.status.idle":"2024-12-10T07:42:10.237102Z","shell.execute_reply.started":"2024-12-10T07:42:10.220274Z","shell.execute_reply":"2024-12-10T07:42:10.235732Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### After converting all features into nummerical, fill null (with mean)","metadata":{}},{"cell_type":"code","source":"encoded_train = encoded_train.fillna(encoded_train.mean())\nencoded_test = encoded_test.fillna(encoded_test.mean())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:10.238161Z","iopub.execute_input":"2024-12-10T07:42:10.238527Z","iopub.status.idle":"2024-12-10T07:42:10.306491Z","shell.execute_reply.started":"2024-12-10T07:42:10.238483Z","shell.execute_reply":"2024-12-10T07:42:10.305305Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Training model","metadata":{}},{"cell_type":"code","source":"X = encoded_train\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.275502Z","iopub.execute_input":"2024-12-10T07:42:56.276020Z","iopub.status.idle":"2024-12-10T07:42:56.280956Z","shell.execute_reply.started":"2024-12-10T07:42:56.275987Z","shell.execute_reply":"2024-12-10T07:42:56.279833Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"y = reliable_labels[['PCIAT-PCIAT_Total']]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.282293Z","iopub.execute_input":"2024-12-10T07:42:56.282701Z","iopub.status.idle":"2024-12-10T07:42:56.295975Z","shell.execute_reply.started":"2024-12-10T07:42:56.282657Z","shell.execute_reply":"2024-12-10T07:42:56.294932Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(type(X))\nprint(type(y))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.297557Z","iopub.execute_input":"2024-12-10T07:42:56.298051Z","iopub.status.idle":"2024-12-10T07:42:56.310051Z","shell.execute_reply.started":"2024-12-10T07:42:56.298007Z","shell.execute_reply":"2024-12-10T07:42:56.308967Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.311513Z","iopub.execute_input":"2024-12-10T07:42:56.312295Z","iopub.status.idle":"2024-12-10T07:42:56.332275Z","shell.execute_reply.started":"2024-12-10T07:42:56.312245Z","shell.execute_reply":"2024-12-10T07:42:56.331028Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"scaler = StandardScaler()\nX_train_scaled = scaler.fit_transform(X_train)\nX_val_scaled = scaler.transform(X_val)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.333480Z","iopub.execute_input":"2024-12-10T07:42:56.333906Z","iopub.status.idle":"2024-12-10T07:42:56.360498Z","shell.execute_reply.started":"2024-12-10T07:42:56.333864Z","shell.execute_reply":"2024-12-10T07:42:56.359729Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_train_scaled.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.362154Z","iopub.execute_input":"2024-12-10T07:42:56.362605Z","iopub.status.idle":"2024-12-10T07:42:56.369085Z","shell.execute_reply.started":"2024-12-10T07:42:56.362547Z","shell.execute_reply":"2024-12-10T07:42:56.368029Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"y_train.values.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.370487Z","iopub.execute_input":"2024-12-10T07:42:56.370927Z","iopub.status.idle":"2024-12-10T07:42:56.380177Z","shell.execute_reply.started":"2024-12-10T07:42:56.370882Z","shell.execute_reply":"2024-12-10T07:42:56.379272Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def cohen_kappa(y_pred, y_label):\n    return cohen_kappa_score(y_pred, y_label)\n    \ntabnet_model = TabNetRegressor(\n    n_d=8,  \n    n_a=8,  \n    n_steps=3,  \n    gamma=1.5, \n    n_independent=2,  \n    n_shared=2,  \n    lambda_sparse=1e-4, \n    seed=42,\n    verbose=1\n)\ntabnet_model.fit(\n    X_train_scaled, y_train.values,\n    eval_set=[(X_val_scaled, y_val.values)],\n    eval_metric=[\"mse\"],\n    max_epochs=100,\n    patience=20,\n    batch_size=128,\n    virtual_batch_size=128\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:42:56.381304Z","iopub.execute_input":"2024-12-10T07:42:56.381610Z","iopub.status.idle":"2024-12-10T07:43:15.110488Z","shell.execute_reply.started":"2024-12-10T07:42:56.381545Z","shell.execute_reply":"2024-12-10T07:43:15.109626Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def mean_squared_error(y_val, y_pred): \n    return (sum((y_val - y_pred)**2))/len(y_pred)\ny_pred = tabnet_model.predict(X_val_scaled)\ny_val = y_val.values\nprint(mean_squared_error(y_val, y_pred))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:43:15.114594Z","iopub.execute_input":"2024-12-10T07:43:15.115164Z","iopub.status.idle":"2024-12-10T07:43:15.169443Z","shell.execute_reply.started":"2024-12-10T07:43:15.115128Z","shell.execute_reply":"2024-12-10T07:43:15.168427Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X_test = scaler.transform(encoded_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:43:15.170700Z","iopub.execute_input":"2024-12-10T07:43:15.171018Z","iopub.status.idle":"2024-12-10T07:43:15.182120Z","shell.execute_reply.started":"2024-12-10T07:43:15.170985Z","shell.execute_reply":"2024-12-10T07:43:15.181267Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"prediction = tabnet_model.predict(X_test)\nprint(prediction)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:43:15.183250Z","iopub.execute_input":"2024-12-10T07:43:15.183562Z","iopub.status.idle":"2024-12-10T07:43:15.204908Z","shell.execute_reply.started":"2024-12-10T07:43:15.183532Z","shell.execute_reply":"2024-12-10T07:43:15.203835Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def mapping_pre_to_sii(predictions):\n    sii = []\n    for i in range(len(predictions)):\n        predict = predictions[i]\n        if (predict >=  0 and predict <= 30):\n            sii.append(0)\n        elif(predict < 50):\n            sii.append(1)\n        elif(predict < 80):\n            sii.append(2)\n        else:\n            sii.append(3)\n    return sii","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:43:15.206453Z","iopub.execute_input":"2024-12-10T07:43:15.206954Z","iopub.status.idle":"2024-12-10T07:43:15.212998Z","shell.execute_reply.started":"2024-12-10T07:43:15.206907Z","shell.execute_reply":"2024-12-10T07:43:15.212076Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pred_sii = mapping_pre_to_sii(prediction)\nsii = pd.DataFrame(pred_sii)\nsii","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:43:15.214344Z","iopub.execute_input":"2024-12-10T07:43:15.214757Z","iopub.status.idle":"2024-12-10T07:43:15.233097Z","shell.execute_reply.started":"2024-12-10T07:43:15.214711Z","shell.execute_reply":"2024-12-10T07:43:15.232003Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission = test[['id']]\nsubmission = pd.concat([submission, sii], axis = 1)\nsubmission = submission.rename(columns={0: 'sii'})\nsubmission.to_csv('submission.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-10T07:43:15.234267Z","iopub.execute_input":"2024-12-10T07:43:15.234593Z","iopub.status.idle":"2024-12-10T07:43:15.249758Z","shell.execute_reply.started":"2024-12-10T07:43:15.234542Z","shell.execute_reply":"2024-12-10T07:43:15.248637Z"}},"outputs":[],"execution_count":null}]}