{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"<div class=\"alert alert-block alert-success\">  \n    <center><h2><strong>👨‍💻 Getting Started with RSNA-MICCAI Brain Tumor Radiogenomic Classification</strong></h2></center>\n    <i></i>\n</div>","metadata":{}},{"cell_type":"markdown","source":"![](https://www.mdpi.com/jcm/jcm-10-01411/article_deploy/html/images/jcm-10-01411-g001.png)","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":0.019576,"end_time":"2021-07-14T06:36:49.043158","exception":false,"start_time":"2021-07-14T06:36:49.023582","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"### Take overview of the Competition here \n\nhttps://www.kaggle.com/c/rsna-miccai-brain-tumor-radiogenomic-classification/overview","metadata":{}},{"cell_type":"markdown","source":"### The exact mpMRI scans included are:\n\n* Fluid Attenuated Inversion Recovery\n* T1-weighted pre-contrast (T1w)\n* T1-weighted post-contrast (T1Gd)\n* T2-weighted (T2)\n","metadata":{}},{"cell_type":"markdown","source":"### Files\ntrain/ - folder containing the training files, with each top-level folder representing a subject\ntrain_labels.csv - file containing the target MGMT_value for each subject in the training data (e.g. the presence of MGMT promoter methylation)\ntest/ - the test files, which use the same structure as train/; your task is to predict the MGMT_value for each subject in the test data. NOTE: the total size of the rerun test set (Public and Private) is ~5x the size of the Public test set\nsample_submission.csv - a sample submission file in the correct format","metadata":{}},{"cell_type":"markdown","source":"### Read the refrence paper for more ideas \n\nU.Baid, et al., “The RSNA-ASNR-MICCAI BraTS 2021 Benchmark on Brain Tumor Segmentation and Radiogenomic Classification”, arXiv:2107.02314, 2021.\nhttps://arxiv.org/abs/2107.02314","metadata":{}},{"cell_type":"markdown","source":"### Importing Libraries","metadata":{"papermill":{"duration":0.019853,"end_time":"2021-07-14T06:36:49.082307","exception":false,"start_time":"2021-07-14T06:36:49.062454","status":"completed"},"tags":[]}},{"cell_type":"code","source":"import os\nimport torch\nimport torch.nn as nn\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib\nimport pydicom as dicom\nimport cv2\nimport ast\n\nimport warnings\nwarnings.filterwarnings(\"ignore\")","metadata":{"papermill":{"duration":0.495913,"end_time":"2021-07-14T06:36:49.597437","exception":false,"start_time":"2021-07-14T06:36:49.101524","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:14.592240Z","iopub.execute_input":"2021-09-11T08:07:14.592700Z","iopub.status.idle":"2021-09-11T08:07:16.216582Z","shell.execute_reply.started":"2021-09-11T08:07:14.592601Z","shell.execute_reply":"2021-09-11T08:07:16.215500Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Path of dataset","metadata":{"papermill":{"duration":0.017935,"end_time":"2021-07-14T06:36:49.634317","exception":false,"start_time":"2021-07-14T06:36:49.616382","status":"completed"},"tags":[]}},{"cell_type":"code","source":"path = '/kaggle/input/rsna-miccai-brain-tumor-radiogenomic-classification/'\nos.listdir(path)","metadata":{"papermill":{"duration":0.031764,"end_time":"2021-07-14T06:36:49.685308","exception":false,"start_time":"2021-07-14T06:36:49.653544","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.218360Z","iopub.execute_input":"2021-09-11T08:07:16.218765Z","iopub.status.idle":"2021-09-11T08:07:16.230757Z","shell.execute_reply.started":"2021-09-11T08:07:16.218723Z","shell.execute_reply":"2021-09-11T08:07:16.229684Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Loading dataset","metadata":{"papermill":{"duration":0.018413,"end_time":"2021-07-14T06:36:49.722929","exception":false,"start_time":"2021-07-14T06:36:49.704516","status":"completed"},"tags":[]}},{"cell_type":"code","source":"train_data = pd.read_csv(path+'train_labels.csv')\nsamp_subm = pd.read_csv(path+'sample_submission.csv')","metadata":{"papermill":{"duration":0.049836,"end_time":"2021-07-14T06:36:49.791666","exception":false,"start_time":"2021-07-14T06:36:49.74183","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.232713Z","iopub.execute_input":"2021-09-11T08:07:16.233050Z","iopub.status.idle":"2021-09-11T08:07:16.252548Z","shell.execute_reply.started":"2021-09-11T08:07:16.233020Z","shell.execute_reply":"2021-09-11T08:07:16.251496Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Overview of dataset","metadata":{"papermill":{"duration":0.01833,"end_time":"2021-07-14T06:36:49.829713","exception":false,"start_time":"2021-07-14T06:36:49.811383","status":"completed"},"tags":[]}},{"cell_type":"code","source":"print('Samples train:', len(train_data))\nprint('Samples test:', len(samp_subm))","metadata":{"papermill":{"duration":0.029432,"end_time":"2021-07-14T06:36:49.877726","exception":false,"start_time":"2021-07-14T06:36:49.848294","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.254045Z","iopub.execute_input":"2021-09-11T08:07:16.254322Z","iopub.status.idle":"2021-09-11T08:07:16.260050Z","shell.execute_reply.started":"2021-09-11T08:07:16.254296Z","shell.execute_reply":"2021-09-11T08:07:16.259071Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.head()","metadata":{"papermill":{"duration":0.04769,"end_time":"2021-07-14T06:36:49.94474","exception":false,"start_time":"2021-07-14T06:36:49.89705","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.261170Z","iopub.execute_input":"2021-09-11T08:07:16.261491Z","iopub.status.idle":"2021-09-11T08:07:16.290853Z","shell.execute_reply.started":"2021-09-11T08:07:16.261453Z","shell.execute_reply":"2021-09-11T08:07:16.289776Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### MGMT_value counts ","metadata":{}},{"cell_type":"code","source":"train_data[\"MGMT_value\"].value_counts().head(2).plot(kind = 'pie', autopct='%1.1f%%', figsize=(8, 8)).legend()","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:16.292090Z","iopub.execute_input":"2021-09-11T08:07:16.292369Z","iopub.status.idle":"2021-09-11T08:07:16.587005Z","shell.execute_reply.started":"2021-09-11T08:07:16.292341Z","shell.execute_reply":"2021-09-11T08:07:16.585554Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data[\"MGMT_value\"].value_counts()","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:16.588583Z","iopub.execute_input":"2021-09-11T08:07:16.588903Z","iopub.status.idle":"2021-09-11T08:07:16.598719Z","shell.execute_reply.started":"2021-09-11T08:07:16.588872Z","shell.execute_reply":"2021-09-11T08:07:16.597514Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"samp_subm.head()","metadata":{"papermill":{"duration":0.034572,"end_time":"2021-07-14T06:36:49.998935","exception":false,"start_time":"2021-07-14T06:36:49.964363","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.601951Z","iopub.execute_input":"2021-09-11T08:07:16.602457Z","iopub.status.idle":"2021-09-11T08:07:16.620575Z","shell.execute_reply.started":"2021-09-11T08:07:16.602407Z","shell.execute_reply":"2021-09-11T08:07:16.619005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Read Dicom Files\nWe consider the first train sample.\n```\nTraining/Validation/Testing\n│\n└─── 00000\n│   │\n│   └─── FLAIR\n│   │   │ Image-1.dcm\n│   │   │ Image-2.dcm\n│   │   │ ...\n│   │   \n│   └─── T1w\n│   │   │ Image-1.dcm\n│   │   │ Image-2.dcm\n│   │   │ ...\n│   │   \n│   └─── T1wCE\n│   │   │ Image-1.dcm\n│   │   │ Image-2.dcm\n│   │   │ ...\n│   │   \n│   └─── T2w\n│   │   │ Image-1.dcm\n│   │   │ Image-2.dcm\n│   │   │ .....\n│   \n└─── 00001\n│   │ ...\n│   \n│ ...   \n│   \n└─── 00002\n│   │ ...\n```","metadata":{"papermill":{"duration":0.020135,"end_time":"2021-07-14T06:36:50.040621","exception":false,"start_time":"2021-07-14T06:36:50.020486","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"### Extract folder id of the first train sample","metadata":{"papermill":{"duration":0.020498,"end_time":"2021-07-14T06:36:50.081102","exception":false,"start_time":"2021-07-14T06:36:50.060604","status":"completed"},"tags":[]}},{"cell_type":"code","source":"folder = str(train_data.loc[0, 'BraTS21ID']).zfill(5)\nfolder","metadata":{"papermill":{"duration":0.034038,"end_time":"2021-07-14T06:36:50.135247","exception":false,"start_time":"2021-07-14T06:36:50.101209","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.622610Z","iopub.execute_input":"2021-09-11T08:07:16.622932Z","iopub.status.idle":"2021-09-11T08:07:16.632148Z","shell.execute_reply.started":"2021-09-11T08:07:16.622899Z","shell.execute_reply":"2021-09-11T08:07:16.630983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Folders content","metadata":{"papermill":{"duration":0.020596,"end_time":"2021-07-14T06:36:50.176531","exception":false,"start_time":"2021-07-14T06:36:50.155935","status":"completed"},"tags":[]}},{"cell_type":"code","source":"os.listdir(path+'train/'+folder)","metadata":{"papermill":{"duration":0.036186,"end_time":"2021-07-14T06:36:50.233083","exception":false,"start_time":"2021-07-14T06:36:50.196897","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.633563Z","iopub.execute_input":"2021-09-11T08:07:16.633927Z","iopub.status.idle":"2021-09-11T08:07:16.652436Z","shell.execute_reply.started":"2021-09-11T08:07:16.633875Z","shell.execute_reply":"2021-09-11T08:07:16.651199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('Number of FLAIR images:', len(os.listdir(path+'train/'+folder+'/'+'FLAIR')))\nprint('Number of T1w images:', len(os.listdir(path+'train/'+folder+'/'+'T1w')))\nprint('Number of T1wCE images:', len(os.listdir(path+'train/'+folder+'/'+'T1wCE')))\nprint('Number of T2w images:', len(os.listdir(path+'train/'+folder+'/'+'T2w')))","metadata":{"_kg_hide-input":true,"papermill":{"duration":0.102662,"end_time":"2021-07-14T06:36:50.358103","exception":false,"start_time":"2021-07-14T06:36:50.255441","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.654023Z","iopub.execute_input":"2021-09-11T08:07:16.654320Z","iopub.status.idle":"2021-09-11T08:07:16.857800Z","shell.execute_reply.started":"2021-09-11T08:07:16.654293Z","shell.execute_reply":"2021-09-11T08:07:16.856503Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Read image","metadata":{"execution":{"iopub.execute_input":"2021-07-14T06:29:52.486712Z","iopub.status.busy":"2021-07-14T06:29:52.486362Z","iopub.status.idle":"2021-07-14T06:29:52.492418Z","shell.execute_reply":"2021-07-14T06:29:52.491077Z","shell.execute_reply.started":"2021-07-14T06:29:52.486664Z"},"papermill":{"duration":0.020451,"end_time":"2021-07-14T06:36:50.401305","exception":false,"start_time":"2021-07-14T06:36:50.380854","status":"completed"},"tags":[]}},{"cell_type":"code","source":"path_file = ''.join([path, 'train/', folder, '/', 'FLAIR/'])\nimage = os.listdir(path_file)[0]\ndata_file = dicom.dcmread(path_file+image)\nimg = data_file.pixel_array","metadata":{"papermill":{"duration":0.044499,"end_time":"2021-07-14T06:36:50.466717","exception":false,"start_time":"2021-07-14T06:36:50.422218","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.859452Z","iopub.execute_input":"2021-09-11T08:07:16.859783Z","iopub.status.idle":"2021-09-11T08:07:16.878625Z","shell.execute_reply.started":"2021-09-11T08:07:16.859750Z","shell.execute_reply":"2021-09-11T08:07:16.877360Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Image shape","metadata":{"papermill":{"duration":0.020498,"end_time":"2021-07-14T06:36:50.508205","exception":false,"start_time":"2021-07-14T06:36:50.487707","status":"completed"},"tags":[]}},{"cell_type":"code","source":"print('Image shape:', img.shape)","metadata":{"papermill":{"duration":0.030781,"end_time":"2021-07-14T06:36:50.560096","exception":false,"start_time":"2021-07-14T06:36:50.529315","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-09-11T08:07:16.880334Z","iopub.execute_input":"2021-09-11T08:07:16.880660Z","iopub.status.idle":"2021-09-11T08:07:16.888625Z","shell.execute_reply.started":"2021-09-11T08:07:16.880629Z","shell.execute_reply":"2021-09-11T08:07:16.887306Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> # Flair Images ","metadata":{}},{"cell_type":"code","source":"def plot_examples(row = 0, cat = 'FLAIR'): \n    folder = str(train_data.loc[row, 'BraTS21ID']).zfill(5)\n    path_file = ''.join([path, 'train/', folder, '/', cat, '/'])\n    images = os.listdir(path_file)\n    \n    fig, axs = plt.subplots(1, 5, figsize=(30, 30))\n    fig.subplots_adjust(hspace = .2, wspace=.2)\n    axs = axs.ravel()\n    \n    for num in range(5):\n        data_file = dicom.dcmread(path_file+images[num])\n        img = data_file.pixel_array\n        axs[num].imshow(img, cmap='gray')\n        axs[num].set_title(cat+' '+images[num])\n        axs[num].set_xticklabels([])\n        axs[num].set_yticklabels([])\n        \nrow = 0\nplot_examples(row = row, cat = 'FLAIR')","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:16.891725Z","iopub.execute_input":"2021-09-11T08:07:16.892080Z","iopub.status.idle":"2021-09-11T08:07:18.003644Z","shell.execute_reply.started":"2021-09-11T08:07:16.892044Z","shell.execute_reply":"2021-09-11T08:07:18.002517Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> # T1w Images ","metadata":{}},{"cell_type":"code","source":"plot_examples(row = row, cat = 'T1w')","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:18.005355Z","iopub.execute_input":"2021-09-11T08:07:18.005675Z","iopub.status.idle":"2021-09-11T08:07:18.891379Z","shell.execute_reply.started":"2021-09-11T08:07:18.005643Z","shell.execute_reply":"2021-09-11T08:07:18.890411Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> # T1wCE Images ","metadata":{}},{"cell_type":"code","source":"plot_examples(row = row, cat = 'T1wCE')","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:18.892458Z","iopub.execute_input":"2021-09-11T08:07:18.892722Z","iopub.status.idle":"2021-09-11T08:07:19.822054Z","shell.execute_reply.started":"2021-09-11T08:07:18.892696Z","shell.execute_reply":"2021-09-11T08:07:19.820893Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> # T2w Images ","metadata":{}},{"cell_type":"code","source":"plot_examples(row = row, cat = 'T2w')","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:19.823603Z","iopub.execute_input":"2021-09-11T08:07:19.823939Z","iopub.status.idle":"2021-09-11T08:07:20.766919Z","shell.execute_reply.started":"2021-09-11T08:07:19.823904Z","shell.execute_reply":"2021-09-11T08:07:20.766059Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Transfer Learning for Brain Tumor Radiogenomic Classification¶","metadata":{}},{"cell_type":"markdown","source":"![](https://www.researchgate.net/profile/Max_Ferguson/publication/322512435/figure/fig3/AS:697390994567179@1543282378794/Fig-A1-The-standard-VGG-16-network-architecture-as-proposed-in-32-Note-that-only.png)","metadata":{}},{"cell_type":"code","source":"VGG_types = {\n    'VGG11' : [64, 'M', 128, 'M', 256, 256, 'M', 512,512, 'M',512,512,'M'],\n    'VGG13' : [64,64, 'M', 128, 128, 'M', 256, 256, 'M', 512,512, 'M', 512,512,'M'],\n    'VGG16' : [64,64, 'M', 128, 128, 'M', 256, 256,256, 'M', 512,512,512, 'M',512,512,512,'M'],\n    'VGG19' : [64,64, 'M', 128, 128, 'M', 256, 256,256,256, 'M', 512,512,512,512, 'M',512,512,512,512,'M']\n}\nclass VGGnet(nn.Module):\n    def __init__(self, model, in_channels=3, num_classes=10, init_weights=True):\n        super(VGGnet,self).__init__()\n        self.in_channels = in_channels\n\n        # create conv_layers corresponding to VGG type\n        self.conv_layers = self.create_conv_laters(VGG_types[model])\n\n        self.fcs = nn.Sequential(\n            nn.Linear(1536, 1536//2),\n            nn.ReLU(),\n            nn.Dropout(),\n            nn.Linear(1536//2, 1536//2),\n            nn.ReLU(),\n            nn.Dropout(),\n            nn.Linear(1536//2, num_classes),\n        )\n\n        # weight initialization\n        if init_weights:\n            self._initialize_weights()\n\n    def forward(self, x):\n        x = self.conv_layers(x)\n        x = x.view(x.size(0), -1)\n        x = self.fcs(x)\n        return x\n\n    # defint weight initialization function\n    def _initialize_weights(self):\n        for m in self.modules():\n            if isinstance(m, nn.Conv3d):\n                nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')\n                if m.bias is not None:\n                    nn.init.constant_(m.bias, 0)\n            elif isinstance(m, nn.BatchNorm3d):\n                nn.init.constant_(m.weight, 1)\n                nn.init.constant_(m.bias, 0)\n            elif isinstance(m, nn.Linear):\n                nn.init.normal_(m.weight, 0, 0.01)\n                nn.init.constant_(m.bias, 0)\n    \n    # define a function to create conv layer taken the key of VGG_type dict \n    def create_conv_laters(self, architecture):\n        layers = []\n        in_channels = self.in_channels # 3\n\n        for x in architecture:\n            if type(x) == int: # int means conv layer\n                out_channels = x\n\n                layers += [nn.Conv3d(in_channels=in_channels, out_channels=out_channels,\n                                     kernel_size=(3,2,3), stride=(1,1,1), padding=(1,1,1)),\n                           nn.BatchNorm3d(x),\n                           nn.ReLU()]\n                in_channels = x\n            elif x == 'M':\n                layers += [nn.MaxPool3d(kernel_size=(2,2,2), stride=(2,2,2))]\n        \n        return nn.Sequential(*layers)","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:20.768217Z","iopub.execute_input":"2021-09-11T08:07:20.768724Z","iopub.status.idle":"2021-09-11T08:07:20.789836Z","shell.execute_reply.started":"2021-09-11T08:07:20.768672Z","shell.execute_reply":"2021-09-11T08:07:20.788184Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# define device\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n\n# creat VGGnet object\n# Choose between 'VGG11', 'VGG13', 'VGG16', 'VGG19'\nmodel = VGGnet('VGG16', in_channels=1, num_classes=1, init_weights=True).to(device)\nprint(model)","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:20.791666Z","iopub.execute_input":"2021-09-11T08:07:20.792157Z","iopub.status.idle":"2021-09-11T08:07:21.515280Z","shell.execute_reply.started":"2021-09-11T08:07:20.792112Z","shell.execute_reply":"2021-09-11T08:07:21.513882Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## More code is coming Soon. Please upvote if you like the work and you will get notifications with additions. \n\n<center><img src=\"https://thumbs.gfycat.com/AshamedWeightyDachshund-max-1mb.gif\"></center>","metadata":{}},{"cell_type":"markdown","source":"<div class=\"alert alert-block alert-info\">  \n    <h3><strong>Guideline to submit the results</strong></h3>\n    <i></i>\n</div>","metadata":{}},{"cell_type":"markdown","source":"> **Check the submission.csv file so we will know the format that how can submit the predictions. Before we do so, it's worth reminding ourselves that this is a code-only competition, meaning that your submission file has to be generated in a script/notebook. The submission.csv file demonstrated what kind of file needs to be produced:**","metadata":{}},{"cell_type":"code","source":"samp_subm.head()","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:21.516831Z","iopub.execute_input":"2021-09-11T08:07:21.517215Z","iopub.status.idle":"2021-09-11T08:07:21.528941Z","shell.execute_reply.started":"2021-09-11T08:07:21.517175Z","shell.execute_reply":"2021-09-11T08:07:21.528095Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### How to submit results ","metadata":{}},{"cell_type":"code","source":"samp_subm.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2021-09-11T08:07:21.530391Z","iopub.execute_input":"2021-09-11T08:07:21.530906Z","iopub.status.idle":"2021-09-11T08:07:21.544825Z","shell.execute_reply.started":"2021-09-11T08:07:21.530866Z","shell.execute_reply":"2021-09-11T08:07:21.543748Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> **We submitted the predictions but we will come back soon with model training and a lot more.**","metadata":{}},{"cell_type":"markdown","source":"<div class=\"alert alert-block alert-danger\">  \n<h1>If you like my work, please upvote ^ 👍 my code so that i will be motivated to share more valuable and helpful work on this competition 😍</h1>\n        </p>\n</div>","metadata":{}}]}