{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TvQvDlAfM4Sr", "outputId": "93516842-f87e-4ab3-93f7-90d041d6faff" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting pytorch-tabnet\n", " Downloading https://files.pythonhosted.org/packages/94/e5/2a808d611a5d44e3c997c0d07362c04a56c70002208e00aec9eee3d923b5/pytorch_tabnet-3.1.1-py3-none-any.whl\n", "Requirement already satisfied: torch<2.0,>=1.2 in /usr/local/lib/python3.7/dist-packages (from pytorch-tabnet) (1.9.0+cu102)\n", "Requirement already satisfied: numpy<2.0,>=1.17 in /usr/local/lib/python3.7/dist-packages (from pytorch-tabnet) (1.19.5)\n", "Requirement already satisfied: tqdm<5.0,>=4.36 in /usr/local/lib/python3.7/dist-packages (from pytorch-tabnet) (4.41.1)\n", "Requirement already satisfied: scipy>1.4 in /usr/local/lib/python3.7/dist-packages (from pytorch-tabnet) (1.4.1)\n", "Requirement already satisfied: scikit_learn>0.21 in /usr/local/lib/python3.7/dist-packages (from pytorch-tabnet) (0.22.2.post1)\n", "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch<2.0,>=1.2->pytorch-tabnet) (3.7.4.3)\n", "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit_learn>0.21->pytorch-tabnet) (1.0.1)\n", "Installing collected packages: pytorch-tabnet\n", "Successfully installed pytorch-tabnet-3.1.1\n" ] } ], "source": [ "pip install pytorch-tabnet" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0fLPTFDANJvy", "outputId": "9bd6bc9e-a04b-49cf-eb85-296384ac62d5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: imbalanced-learn in /usr/local/lib/python3.7/dist-packages (0.4.3)\n", "Requirement already satisfied: scikit-learn>=0.20 in /usr/local/lib/python3.7/dist-packages (from imbalanced-learn) (0.22.2.post1)\n", "Requirement already satisfied: scipy>=0.13.3 in /usr/local/lib/python3.7/dist-packages (from imbalanced-learn) (1.4.1)\n", "Requirement already satisfied: numpy>=1.8.2 in /usr/local/lib/python3.7/dist-packages (from imbalanced-learn) (1.19.5)\n", "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.20->imbalanced-learn) (1.0.1)\n" ] } ], "source": [ " pip install imbalanced-learn" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TtSu1A6q7jJJ", "outputId": "a664b1d0-5861-4f79-a6e6-95df2e4a543c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting tsne\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/4c/ea/f4deb02eb49bbc7006624398d3909bbb43cd93efd58e66b74320b5530edd/tsne-0.3.1.tar.gz (547kB)\n", "\r", "\u001b[K |▋ | 10kB 6.8MB/s eta 0:00:01\r", "\u001b[K |█▏ | 20kB 11.2MB/s eta 0:00:01\r", "\u001b[K |█▉ | 30kB 15.0MB/s eta 0:00:01\r", "\u001b[K |██▍ | 40kB 18.1MB/s eta 0:00:01\r", "\u001b[K |███ | 51kB 20.6MB/s eta 0:00:01\r", "\u001b[K |███▋ | 61kB 22.9MB/s eta 0:00:01\r", "\u001b[K |████▏ | 71kB 22.1MB/s eta 0:00:01\r", "\u001b[K |████▉ | 81kB 22.9MB/s eta 0:00:01\r", "\u001b[K |█████▍ | 92kB 23.9MB/s eta 0:00:01\r", "\u001b[K |██████ | 102kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████▋ | 112kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████▏ | 122kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████▉ | 133kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████▍ | 143kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████ | 153kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████▋ | 163kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████▏ | 174kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████▊ | 184kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████▍ | 194kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████ | 204kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████▋ | 215kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████▏ | 225kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████▊ | 235kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████▍ | 245kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████ | 256kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████▋ | 266kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████▏ | 276kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████▊ | 286kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████████▍ | 296kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████████ | 307kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████████▌ | 317kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████████▏ | 327kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████████▊ | 337kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████████▍ | 348kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████████████ | 358kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████████████▌ | 368kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████████████▏ | 378kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████████████▊ | 389kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████████████▍ | 399kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████████████ | 409kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████████████▌ | 419kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████████████████▏ | 430kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████████████████▊ | 440kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████████████████▎ | 450kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████████████████ | 460kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████████████████▌ | 471kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████████████████▏ | 481kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████████████████▊ | 491kB 24.7MB/s eta 0:00:01\r", "\u001b[K |█████████████████████████████▎ | 501kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████████████████████ | 512kB 24.7MB/s eta 0:00:01\r", "\u001b[K |██████████████████████████████▌ | 522kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████████████████████▏| 532kB 24.7MB/s eta 0:00:01\r", "\u001b[K |███████████████████████████████▊| 542kB 24.7MB/s eta 0:00:01\r", "\u001b[K |████████████████████████████████| 552kB 24.7MB/s \n", "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", " Preparing wheel metadata ... \u001b[?25l\u001b[?25hdone\n", "Requirement already satisfied: numpy>=1.7.1 in /usr/local/lib/python3.7/dist-packages (from tsne) (1.19.5)\n", "Requirement already satisfied: scipy>=0.12.0 in /usr/local/lib/python3.7/dist-packages (from tsne) (1.4.1)\n", "Requirement already satisfied: cython>=0.19.1 in /usr/local/lib/python3.7/dist-packages (from tsne) (0.29.23)\n", "Building wheels for collected packages: tsne\n", " Building wheel for tsne (PEP 517) ... \u001b[?25l\u001b[?25hdone\n", " Created wheel for tsne: filename=tsne-0.3.1-cp37-cp37m-linux_x86_64.whl size=260482 sha256=e979c270ac532f6a8424de16caa61797ab75017d9683c488fe286210dfd976d7\n", " Stored in directory: /root/.cache/pip/wheels/3e/d6/fc/58392f18ea8fc4c74e20185d2faeee87a1c1924a182606c6cd\n", "Successfully built tsne\n", "Installing collected packages: tsne\n", "Successfully installed tsne-0.3.1\n" ] } ], "source": [ "pip install tsne" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ZdQJ5v4bNNbB", "outputId": "cea7db10-6176-4dae-a954-5f4f61dcbade" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/sklearn/externals/six.py:31: FutureWarning: The module is deprecated in version 0.21 and will be removed in version 0.23 since we've dropped support for Python 2.7. Please rely on the official version of six (https://pypi.org/project/six/).\n", " \"(https://pypi.org/project/six/).\", FutureWarning)\n", "/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.neighbors.base module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.\n", " warnings.warn(message, FutureWarning)\n" ] } ], "source": [ "import pandas as pd\n", "#from tabnet import TabNet, TabNetClassifier\n", "#from tabnet import TabNet, TabNetClassifier\n", "import tensorflow as tf\n", "from tensorflow.keras.models import Model\n", "from tensorflow.keras.layers import Input, Dense\n", "import imblearn\n", "from imblearn.over_sampling import ADASYN, SMOTE\n", "from imblearn.under_sampling import RandomUnderSampler\n", "from collections import Counter\n", "#import umap\n", "import random \n", "from sklearn.model_selection import StratifiedKFold\n", "from sklearn.model_selection import cross_val_score\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.manifold import TSNE\n", "from sklearn.decomposition import FastICA, PCA, FactorAnalysis\n", "from sklearn.metrics import roc_auc_score, recall_score, f1_score, classification_report, accuracy_score,roc_curve, confusion_matrix, auc,precision_score, log_loss\n", "pd.set_option('display.max_columns', None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 226 }, "id": "LFMmD6WGNPEh", "outputId": "cde67d9b-46d9-490f-fecf-64a798d3813c" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AgeGender..female.0..male1.ethnicityraceFeverCoughSOBFatigueSputumMyalgiaDiarrheaNausea.VomitingSore.throatRunny.nose.Nasal.congestionLoss.of.smellLoss.of.tasteHeadahceChest.discomfort..chest.painAsymptomaticsmoking_historyhypertensionhxdiabeteshxasthmahxcoronaryheartdiseasehxcopdhxheartfailurehxcarcinomahximmunosuppressionhxckdhxALTCRPD.dimerFerritinHRLDHLymphocyteSpO2ProcalcitoninRRSystolic.BPTemperatureTroponinICU.or.not
0230210000000000000010000000000312.2857203.911734540.6960.28188937.00.011
12513711011100000011000000000003711.7183587.11324836.8980.642810739.50.011
22812111100011110001000000000001822.0389932.112456210.4881.811712339.10.011
328117111000000000000000000000018310.53702068.012370613.4940.922012038.90.011
43012111010000000000000000000002186.73492141.010168817.9980.371513037.10.011
\n", "
" ], "text/plain": [ " Age Gender..female.0..male1. ethnicity race Fever Cough SOB Fatigue \\\n", "0 23 0 2 1 0 0 0 0 \n", "1 25 1 3 7 1 1 0 1 \n", "2 28 1 2 1 1 1 1 0 \n", "3 28 1 1 7 1 1 1 0 \n", "4 30 1 2 1 1 1 0 1 \n", "\n", " Sputum Myalgia Diarrhea Nausea.Vomiting Sore.throat \\\n", "0 0 0 0 0 0 \n", "1 1 1 0 0 0 \n", "2 0 0 1 1 1 \n", "3 0 0 0 0 0 \n", "4 0 0 0 0 0 \n", "\n", " Runny.nose.Nasal.congestion Loss.of.smell Loss.of.taste Headahce \\\n", "0 0 0 0 0 \n", "1 0 0 0 1 \n", "2 1 0 0 0 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " Chest.discomfort..chest.pain Asymptomatic smoking_history \\\n", "0 0 1 0 \n", "1 1 0 0 \n", "2 1 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "\n", " hypertensionhx diabeteshx asthmahx coronaryheartdiseasehx copdhx \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "3 0 0 0 0 0 \n", "4 0 0 0 0 0 \n", "\n", " heartfailurehx carcinomahx immunosuppressionhx ckdhx ALT CRP \\\n", "0 0 0 0 0 31 2.2 \n", "1 0 0 0 0 37 11.7 \n", "2 0 0 0 0 18 22.0 \n", "3 0 0 0 0 183 10.5 \n", "4 0 0 0 0 218 6.7 \n", "\n", " D.dimer Ferritin HR LDH Lymphocyte SpO2 Procalcitonin RR \\\n", "0 857 203.9 117 345 40.6 96 0.28 18 \n", "1 183 587.1 132 483 6.8 98 0.64 28 \n", "2 389 932.1 124 562 10.4 88 1.81 17 \n", "3 370 2068.0 123 706 13.4 94 0.92 20 \n", "4 349 2141.0 101 688 17.9 98 0.37 15 \n", "\n", " Systolic.BP Temperature Troponin ICU.or.not \n", "0 89 37.0 0.01 1 \n", "1 107 39.5 0.01 1 \n", "2 123 39.1 0.01 1 \n", "3 120 38.9 0.01 1 \n", "4 130 37.1 0.01 1 " ] }, "execution_count": 5, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "data_icu = pd.read_csv('ICUMICE2754.csv')\n", "data_icu.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 226 }, "id": "oUKQ3JWMNYCC", "outputId": "3e50789e-101d-4d1c-f2cb-9c5f8312aa2e" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AgeGenderethnicityraceFeverCoughSOBFatigueSputumMyalgiaDiarrheaNausea_VomitingSore_throatRunny_nose_Nasal_congestionLoss_of_smellLoss_of_tasteHeadahceChest_discomfort__chest_painAsymptomaticsmoking_historyhypertensionhxdiabeteshxasthmahxcoronaryheartdiseasehxcopdhxheartfailurehxcarcinomahximmunosuppressionhxckdhxALTCRPD_dimerFerritinHRLDHLymphocyteSpO2ProcalcitoninRRSystolic_BPTemperatureTroponinICU_or_not
0230210000000000000010000000000312.2857203.911734540.6960.28188937.00.011
12513711011100000011000000000003711.7183587.11324836.8980.642810739.50.011
22812111100011110001000000000001822.0389932.112456210.4881.811712339.10.011
328117111000000000000000000000018310.53702068.012370613.4940.922012038.90.011
43012111010000000000000000000002186.73492141.010168817.9980.371513037.10.011
\n", "
" ], "text/plain": [ " Age Gender ethnicity race Fever Cough SOB Fatigue Sputum Myalgia \\\n", "0 23 0 2 1 0 0 0 0 0 0 \n", "1 25 1 3 7 1 1 0 1 1 1 \n", "2 28 1 2 1 1 1 1 0 0 0 \n", "3 28 1 1 7 1 1 1 0 0 0 \n", "4 30 1 2 1 1 1 0 1 0 0 \n", "\n", " Diarrhea Nausea_Vomiting Sore_throat Runny_nose_Nasal_congestion \\\n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "2 1 1 1 1 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " Loss_of_smell Loss_of_taste Headahce Chest_discomfort__chest_pain \\\n", "0 0 0 0 0 \n", "1 0 0 1 1 \n", "2 0 0 0 1 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " Asymptomatic smoking_history hypertensionhx diabeteshx asthmahx \\\n", "0 1 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "3 0 0 0 0 0 \n", "4 0 0 0 0 0 \n", "\n", " coronaryheartdiseasehx copdhx heartfailurehx carcinomahx \\\n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "2 0 0 0 0 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "\n", " immunosuppressionhx ckdhx ALT CRP D_dimer Ferritin HR LDH \\\n", "0 0 0 31 2.2 857 203.9 117 345 \n", "1 0 0 37 11.7 183 587.1 132 483 \n", "2 0 0 18 22.0 389 932.1 124 562 \n", "3 0 0 183 10.5 370 2068.0 123 706 \n", "4 0 0 218 6.7 349 2141.0 101 688 \n", "\n", " Lymphocyte SpO2 Procalcitonin RR Systolic_BP Temperature Troponin \\\n", "0 40.6 96 0.28 18 89 37.0 0.01 \n", "1 6.8 98 0.64 28 107 39.5 0.01 \n", "2 10.4 88 1.81 17 123 39.1 0.01 \n", "3 13.4 94 0.92 20 120 38.9 0.01 \n", "4 17.9 98 0.37 15 130 37.1 0.01 \n", "\n", " ICU_or_not \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 " ] }, "execution_count": 6, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "data_icu.columns = data_icu.columns.str.replace('.','_')\n", "data_icu = data_icu.rename(columns={'Gender__female_0__male1_':'Gender'})\n", "data_icu.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "jVJ62zq1RdEa" }, "outputs": [], "source": [ "X = data_icu.drop(columns='ICU_or_not')\n", "y= data_icu['ICU_or_not']" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5iLr69ziPxqy", "outputId": "17191d97-b7f7-4158-8edb-9408fd054b47" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Resampled dataset shape Counter({1: 836, 0: 835})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function safe_indexing is deprecated; safe_indexing is deprecated in version 0.22 and will be removed in version 0.24.\n", " warnings.warn(msg, category=FutureWarning)\n" ] } ], "source": [ "ada = ADASYN(random_state=0, n_neighbors=20)\n", "X_res, y_res = ada.fit_resample(X, y)\n", "print('Resampled dataset shape {}'.format(Counter(y_res)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0ild212ijoEG", "outputId": "aea4893c-461f-4e16-c655-043e2f2aaca0" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Resampled dataset shape Counter({1: 836, 0: 835})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function safe_indexing is deprecated; safe_indexing is deprecated in version 0.22 and will be removed in version 0.24.\n", " warnings.warn(msg, category=FutureWarning)\n" ] } ], "source": [ "smote = SMOTE(random_state=0)\n", "X_resm, y_resm = ada.fit_resample(X, y)\n", "print('Resampled dataset shape {}'.format(Counter(y_resm)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xlBN3hsNI3Zh", "outputId": "97ee2b34-a0bf-49aa-90cd-97db84a7b67c" }, "outputs": [ { "data": { "text/plain": [ "(1671, 42)" ] }, "execution_count": 10, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "transformer = FastICA(random_state=0)\n", "X_transformed = transformer.fit_transform(X_res)\n", "X_transformed.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-6fRKosCkAH4", "outputId": "f39af7a7-df42-4e88-8ca9-98cef56ab6de" }, "outputs": [ { "data": { "text/plain": [ "(1671, 42)" ] }, "execution_count": 11, "metadata": { "tags": [] }, "output_type": "execute_result" } ], "source": [ "transformer = PCA(random_state=0)\n", "X_transformed0 = transformer.fit_transform(X_res)\n", "X_transformed0.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "yRHyXaoHNu_L" }, "outputs": [], "source": [ "from pytorch_tabnet.tab_model import TabNetClassifier" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X_transformed, y_res, \n", " test_size=0.1, random_state=80)\n", "target = data_icu['ICU_or_not']\n", "skf = StratifiedKFold(n_splits=5)\n", "fold_no = 1\n", "for train_index, test_index in skf.split(data_icu, target):\n", " train = data_icu.loc[train_index,:]\n", " test = data_icu.loc[test_index,:]\n", " print('Fold',str(fold_no),'Class Ratio:',sum(test['ICU_or_not'])/len(test['ICU_or_not']))\n", " fold_no += 1\n", "def train_model(train, test, fold_no):\n", " \n", " \n", " clf = TabNetClassifier(n_d=64,n_shared=2,mask_type='entmax', momentum=0.3,n_steps=3,n_independent=2,lambda_sparse=0.003,gamma=2.7)\n", " clf.fit(\n", " X_train=X_train, y_train=y_train,\n", " eval_set=[(X_train, y_train), (X_test, y_test)],\n", " eval_name=['train', 'test'],\n", " eval_metric=['auc'], max_epochs=200, batch_size=128, patience=60\n", " \n", " )\n", " predictions = clf.predict(X_test)\n", " #print('Fold',str(fold_no),'Accuracy:',recall_score(y_test,predictions))\n", " print('Roc score is',np.mean(roc_auc_score(y_test,predictions)))\n", " print('f1 score is'np.mean(f1_score(y_test,predictions)))\n", " print('accuracy score is'np.mean(accuracy_score(y_test,predictions)))\n", " print('recall score is'np.mean(recall_score(y_test,predictions)))\n", " print('precision score is'np.mean(precision_score(y_test,predictions))) \n", "import numpy as np\n", "\n", "fold_no = 1\n", "for train_index, test_index in skf.split(data_icu, target):\n", " train = data_icu.loc[train_index,:]\n", " test = data_icu.loc[test_index,:]\n", " train_model(train,test,fold_no)\n", " fold_no += 1 " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tab_pred = clf.predict(X_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 313 }, "id": "oqbEgJJNFNi-", "outputId": "157c3fb2-4b78-46f2-a7f8-902a2f8684e5" }, "outputs": [ { "data": { "application/javascript": [ "\n", " async function download(id, filename, size) {\n", " if (!google.colab.kernel.accessAllowed) {\n", " return;\n", " }\n", " const div = document.createElement('div');\n", " const label = document.createElement('label');\n", " label.textContent = `Downloading \"${filename}\": `;\n", " div.appendChild(label);\n", " const progress = document.createElement('progress');\n", " progress.max = size;\n", " div.appendChild(progress);\n", " document.body.appendChild(div);\n", "\n", " const buffers = [];\n", " let downloaded = 0;\n", "\n", " const channel = await google.colab.kernel.comms.open(id);\n", " // Send a message to notify the kernel that we're ready.\n", " channel.send({})\n", "\n", " for await (const message of channel.messages) {\n", " // Send a message to notify the kernel that we're ready.\n", " channel.send({})\n", " if (message.buffers) {\n", " for (const buffer of message.buffers) {\n", " buffers.push(buffer);\n", " downloaded += buffer.byteLength;\n", " progress.value = downloaded;\n", " }\n", " }\n", " }\n", " const blob = new Blob(buffers, {type: 'application/binary'});\n", " const a = document.createElement('a');\n", " a.href = window.URL.createObjectURL(blob);\n", " a.download = filename;\n", " div.appendChild(a);\n", " a.click();\n", " div.remove();\n", " }\n", " " ], "text/plain": [ "" ] }, "metadata": { "tags": [] }, "output_type": "display_data" }, { "data": { "application/javascript": [ "download(\"download_897462b8-3bb2-438a-a17d-2d874801eb43\", \"trvalicu.pdf\", 16269)" ], "text/plain": [ "" ] }, "metadata": { "tags": [] }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] }, "output_type": "display_data" } ], "source": [ "# plot auc\n", "import matplotlib.pyplot as plt\n", "from google.colab import files\n", "\n", "plt.plot(clf.history['train_auc'], label='Training accuracy')\n", "plt.plot(clf.history['test_auc'],label='Validation accuracy')\n", "plt.rcParams[\"figure.figsize\"]=(8, 7)\n", "plt.title('Accuracy score for training and testing')\n", "plt.xlabel('Epoch')\n", "plt.ylabel('Accuracy')\n", "plt.legend()\n", "plt.savefig('trvalicu.pdf', transparent=True,dphi=300)\n", "files.download(\"trvalicu.pdf\");" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "mIvc97zgB_66" }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from google.colab import files\n", "\n", "def plot_feature_importance(importance,names,model_type):\n", "\n", "\n", " #Create arrays from feature importance and feature names\n", " feature_importance = np.array(importance)\n", " feature_names = np.array(names)\n", "\n", " #Create a DataFrame using a Dictionary\n", " data_icu={'feature_names':feature_names,'feature_importance':feature_importance}\n", " fi_df = pd.DataFrame(data_icu)\n", "\n", " #Sort the DataFrame in order decreasing feature importance\n", " fi_df.sort_values(by=['feature_importance'], ascending=False,inplace=True,)\n", "\n", " #Define size of bar plot\n", " plt.figure(figsize=(11,11))\n", " #Plot Searborn bar chart\n", " sns.barplot(x=fi_df['feature_importance'], y=fi_df['feature_names'])\n", " #Add chart labels\n", " plt.title('FEATURE IMPORTANCE')\n", " plt.xlabel('FEATURE IMPORTANCE')\n", " plt.ylabel('FEATURES')\n", " plt.savefig('featimpicu.pdf', transparent=True,dphi=300)\n", " files.download(\"featimpicu.pdf\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 676 }, "id": "2baUV6GVCKqM", "outputId": "09c7c5fa-2395-4636-b09e-1bfd4c11bf9e" }, "outputs": [ { "data": { "application/javascript": [ "\n", " async function download(id, filename, size) {\n", " if (!google.colab.kernel.accessAllowed) {\n", " return;\n", " }\n", " const div = document.createElement('div');\n", " const label = document.createElement('label');\n", " label.textContent = `Downloading \"${filename}\": `;\n", " div.appendChild(label);\n", " const progress = document.createElement('progress');\n", " progress.max = size;\n", " div.appendChild(progress);\n", " document.body.appendChild(div);\n", "\n", " const buffers = [];\n", " let downloaded = 0;\n", "\n", " const channel = await google.colab.kernel.comms.open(id);\n", " // Send a message to notify the kernel that we're ready.\n", " channel.send({})\n", "\n", " for await (const message of channel.messages) {\n", " // Send a message to notify the kernel that we're ready.\n", " channel.send({})\n", " if (message.buffers) {\n", " for (const buffer of message.buffers) {\n", " buffers.push(buffer);\n", " downloaded += buffer.byteLength;\n", " progress.value = downloaded;\n", " }\n", " }\n", " }\n", " const blob = new Blob(buffers, {type: 'application/binary'});\n", " const a = document.createElement('a');\n", " a.href = window.URL.createObjectURL(blob);\n", " a.download = filename;\n", " div.appendChild(a);\n", " a.click();\n", " div.remove();\n", " }\n", " " ], "text/plain": [ "" ] }, "metadata": { "tags": [] }, "output_type": "display_data" }, { "data": { "application/javascript": [ "download(\"download_1182c1d9-b9fe-4d1b-bb44-9e7e000b34ee\", \"featimpicu.pdf\", 20683)" ], "text/plain": [ "" ] }, "metadata": { "tags": [] }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] }, "output_type": "display_data" } ], "source": [ "plot_feature_importance(clf.feature_importances_, X.columns,'TabNet')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 475 }, "id": "vKVWHmhnQdcK", "outputId": "6bcc53d5-0e3d-48d5-eba3-3433a11a3d3e" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "No handles with labels found to put in legend.\n" ] }, { "data": { "application/javascript": [ "\n", " async function download(id, filename, size) {\n", " if (!google.colab.kernel.accessAllowed) {\n", " return;\n", " }\n", " const div = document.createElement('div');\n", " const label = document.createElement('label');\n", " label.textContent = `Downloading \"${filename}\": `;\n", " div.appendChild(label);\n", " const progress = document.createElement('progress');\n", " progress.max = size;\n", " div.appendChild(progress);\n", " document.body.appendChild(div);\n", "\n", " const buffers = [];\n", " let downloaded = 0;\n", "\n", " const channel = await google.colab.kernel.comms.open(id);\n", " // Send a message to notify the kernel that we're ready.\n", " channel.send({})\n", "\n", " for await (const message of channel.messages) {\n", " // Send a message to notify the kernel that we're ready.\n", " channel.send({})\n", " if (message.buffers) {\n", " for (const buffer of message.buffers) {\n", " buffers.push(buffer);\n", " downloaded += buffer.byteLength;\n", " progress.value = downloaded;\n", " }\n", " }\n", " }\n", " const blob = new Blob(buffers, {type: 'application/binary'});\n", " const a = document.createElement('a');\n", " a.href = window.URL.createObjectURL(blob);\n", " a.download = filename;\n", " div.appendChild(a);\n", " a.click();\n", " div.remove();\n", " }\n", " " ], "text/plain": [ "" ] }, "metadata": { "tags": [] }, "output_type": "display_data" }, { "data": { "application/javascript": [ "download(\"download_35498819-6642-466f-beb1-7fabbcd50853\", \"iculoss.pdf\", 11913)" ], "text/plain": [ "" ] }, "metadata": { "tags": [] }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] }, "output_type": "display_data" } ], "source": [ "# plot losses\n", "import matplotlib.pyplot as plt\n", "plt.plot(clf.history['loss'])\n", "plt.rcParams[\"figure.figsize\"]=(10, 10)\n", "plt.title('Model Loss')\n", "plt.xlabel('Epoch')\n", "plt.ylabel('Loss')\n", "plt.legend();\n", "plt.savefig('iculoss.pdf', dpi=300)\n", "files.download(\"iculoss.pdf\")\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "background_save": true }, "id": "IFHkqDLGSTar" }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from sklearn.metrics import precision_recall_curve\n", "from sklearn.metrics import auc\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "clf_probs = clf.predict_proba(X_test)\n", "clf_probs = clf_probs[:, 1]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "background_save": true }, "id": "ASjv-DaKg4_D" }, "outputs": [], "source": [ "clf_precision, clf_recall, _ = precision_recall_curve(y_test, clf_probs)\n", "clf_f1, clf_auc = f1_score(y_test, tab_pred), auc(clf_recall, clf_precision)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "28nML_luhHng" }, "outputs": [], "source": [ "print('TabNet: f1=%.3f auc=%.3f' % (clf_f1, clf_auc))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "asjPHeRZhVrx" }, "outputs": [], "source": [ "plt.plot(clf_recall, clf_precision, marker='.',)\n", "plt.xlabel('Recall')\n", "plt.ylabel('Precision')\n", "plt.title('Precision-Recall Curve for Proposed Model')\n", "plt.legend()\n", "plt.savefig('precallicu.pdf', transparent=True,dphi=300)\n", "files.download(\"precallicu.pdf\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "CTBJWK-c6eto" }, "outputs": [], "source": [ "explain_matrix, masks = clf.explain(X_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "g-V0uFfXZK4P" }, "outputs": [], "source": [ "from google.colab import files" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "743Uml8oFI6N" }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "fig, axis = plt.subplots(2,1, figsize=(15,15))\n", "for i in range(2):\n", " axis[i].imshow(masks[i][:20])\n", " axis[i].set_title(f'masks{i}')\n", " fig.suptitle('Feature Importance Masks')\n", "plt.savefig('masksicu.pdf', transparent=True,dphi=300)\n", "files.download(\"masksicu.pdf\") " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "DsQ7ioIPo_Bn" }, "outputs": [], "source": [ "cm = confusion_matrix(y_test, tab_pred)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "55Dzi5snqpYi" }, "outputs": [], "source": [ "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", "\n", "cmd = ConfusionMatrixDisplay(cm, display_labels=['ICU','No ICU'])\n", "cmd.plot()\n", "plt.savefig('confmatrixicu.pdf', transparent=True,dphi=300)\n", "files.download(\"confmatrixicu.pdf\") " ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "ICU.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 1 }