{"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":"<html>\n    <body>\n        <center>\n    <font color=\"Blue\">\n    <H1>Predict Blood Clot Origins In Ischemic Stroke</H1> \n    <h2>[CE (Cardioembolic) or LAA (Large Artery Atherosclerosis)]</h2>\n    <h4>The purpose of this notebook is to enable healthcare providers to better identify the origins of blood clots in deadly strokes, making it easier for physicians to prescribe the best post-stroke therapeutic management and reducing the likelihood of a second stroke.</h4>\n        </center></body></html>     ","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-10-05T20:31:51.136271Z","iopub.execute_input":"2022-10-05T20:31:51.13681Z","iopub.status.idle":"2022-10-05T20:31:51.162542Z","shell.execute_reply.started":"2022-10-05T20:31:51.136683Z","shell.execute_reply":"2022-10-05T20:31:51.161519Z"}}},{"cell_type":"code","source":"import gc\nimport os\nimport matplotlib.pyplot as plt\nimport pandas as pd\nimport numpy as np\n%matplotlib inline\nimport warnings\nwarnings.filterwarnings('ignore')\nfrom sklearn.model_selection import KFold\nfrom sklearn.metrics import mean_squared_error\nfrom sklearn.model_selection import train_test_split\nfrom tqdm import tqdm\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras import layers\nimport tensorflow.keras.models\nfrom tensorflow.keras.layers  import Conv2D,MaxPooling2D,Dropout,Flatten,Dense\nfrom tensorflow.keras.layers import GlobalMaxPooling2D\n# import openslide\n# from openslide import OpenSlide\n# from openslide import open_slide\n# from openslide.deepzoom import DeepZoomGenerator\n# import cv2 as cv\nfrom PIL import Image\nImage.MAX_IMAGE_PIXELS = None","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:21:11.319376Z","iopub.execute_input":"2023-03-02T08:21:11.319779Z","iopub.status.idle":"2023-03-02T08:21:19.563254Z","shell.execute_reply.started":"2023-03-02T08:21:11.319744Z","shell.execute_reply":"2023-03-02T08:21:19.562086Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#importing training dataset\ntrain_df = pd.read_csv('../input/mayo-clinic-strip-ai/train.csv')\ntrain_df.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:22:09.276812Z","iopub.execute_input":"2023-03-02T08:22:09.277226Z","iopub.status.idle":"2023-03-02T08:22:09.308408Z","shell.execute_reply.started":"2023-03-02T08:22:09.277191Z","shell.execute_reply":"2023-03-02T08:22:09.307158Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#importing test dataset\ntest_df  = pd.read_csv('../input/mayo-clinic-strip-ai/test.csv')\ntest_df.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:22:10.89518Z","iopub.execute_input":"2023-03-02T08:22:10.896382Z","iopub.status.idle":"2023-03-02T08:22:10.912654Z","shell.execute_reply.started":"2023-03-02T08:22:10.896333Z","shell.execute_reply":"2023-03-02T08:22:10.911475Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Adding a new column called \"file_path\" to \"test_df\" and populating it with the file paths of \n# image files inside input/mayo-clinic-strip-ai/test folder.\n\ntest_df[\"file_path\"]  = test_df[\"image_id\"].apply(lambda x: \"../input/mayo-clinic-strip-ai/test/\" + x + \".tif\")\ntest_df.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:22:12.275847Z","iopub.execute_input":"2023-03-02T08:22:12.276566Z","iopub.status.idle":"2023-03-02T08:22:12.293346Z","shell.execute_reply.started":"2023-03-02T08:22:12.276525Z","shell.execute_reply":"2023-03-02T08:22:12.292152Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#creating a target column in training set and assigning values '0' and '1' for both the labels\ntrain_df['target']=train_df['label'].apply(lambda x:1 if x=='CE' else 0)\ntrain_df.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:22:13.539869Z","iopub.execute_input":"2023-03-02T08:22:13.541043Z","iopub.status.idle":"2023-03-02T08:22:13.556189Z","shell.execute_reply.started":"2023-03-02T08:22:13.540961Z","shell.execute_reply":"2023-03-02T08:22:13.554755Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Preparing the training dataset","metadata":{}},{"cell_type":"code","source":"'''The following code collects the file paths for all files in the 'CE' directory and its subdirectories \nand stores them in an empty list called 'x_train'''\n\nx_train=[]\nfor path, subdirs,files in os.walk('../input/mayo-clinic/First Experiment/train/CE'):\n    for name in files:\n        x_train.append(os.path.join(path,name))","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:22:16.934431Z","iopub.execute_input":"2023-03-02T08:22:16.934837Z","iopub.status.idle":"2023-03-02T08:23:30.730546Z","shell.execute_reply.started":"2023-03-02T08:22:16.934801Z","shell.execute_reply":"2023-03-02T08:23:30.729369Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"''' Creating a dataframe df with 2 columns 'filepath' and 'label'. Populating 'filepath' column\nwith actual filepath from x_train list'''\n\ndf=pd.DataFrame()\ndf['filepath']=x_train\ndf['label']='CE'","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:47:46.992029Z","iopub.execute_input":"2023-03-02T08:47:46.992814Z","iopub.status.idle":"2023-03-02T08:47:47.023955Z","shell.execute_reply.started":"2023-03-02T08:47:46.992772Z","shell.execute_reply":"2023-03-02T08:47:47.022952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# df looks like this at this stage\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:54:53.609485Z","iopub.execute_input":"2023-03-02T08:54:53.610273Z","iopub.status.idle":"2023-03-02T08:54:53.620857Z","shell.execute_reply.started":"2023-03-02T08:54:53.610231Z","shell.execute_reply":"2023-03-02T08:54:53.619785Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''The following code collects the file paths for all files in the 'LAA' directory and its subdirectories \nand stores them in an empty list called 'x_train'''\n\nx_train=[]\nfor path, subdirs,files in os.walk('../input/mayo-clinic/First Experiment/train/LAA'):\n    for name in files:\n        x_train.append(os.path.join(path,name))","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:54:54.884847Z","iopub.execute_input":"2023-03-02T08:54:54.885563Z","iopub.status.idle":"2023-03-02T08:55:30.361921Z","shell.execute_reply.started":"2023-03-02T08:54:54.885521Z","shell.execute_reply":"2023-03-02T08:55:30.360843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#storing the filepath and label in df1\n\ndf1=pd.DataFrame()\ndf1['filepath']=x_train\ndf1['label']='LAA'","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:55:58.092071Z","iopub.execute_input":"2023-03-02T08:55:58.092815Z","iopub.status.idle":"2023-03-02T08:55:58.110353Z","shell.execute_reply.started":"2023-03-02T08:55:58.092773Z","shell.execute_reply":"2023-03-02T08:55:58.109258Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Merging df and df1 , storing the content inside new Dataframe train_df\n\ntrain_df=df.append(df1)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:55:59.284578Z","iopub.execute_input":"2023-03-02T08:55:59.285001Z","iopub.status.idle":"2023-03-02T08:55:59.297004Z","shell.execute_reply.started":"2023-03-02T08:55:59.284946Z","shell.execute_reply":"2023-03-02T08:55:59.295705Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df=train_df.reset_index()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:00.244118Z","iopub.execute_input":"2023-03-02T08:56:00.245396Z","iopub.status.idle":"2023-03-02T08:56:00.269004Z","shell.execute_reply.started":"2023-03-02T08:56:00.245338Z","shell.execute_reply":"2023-03-02T08:56:00.26792Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.drop(['index'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:01.029035Z","iopub.execute_input":"2023-03-02T08:56:01.03002Z","iopub.status.idle":"2023-03-02T08:56:01.042339Z","shell.execute_reply.started":"2023-03-02T08:56:01.029939Z","shell.execute_reply":"2023-03-02T08:56:01.040883Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df['target']=train_df['label'].apply(lambda x:1 if x=='CE' else 0)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:01.806265Z","iopub.execute_input":"2023-03-02T08:56:01.806882Z","iopub.status.idle":"2023-03-02T08:56:01.853653Z","shell.execute_reply.started":"2023-03-02T08:56:01.80684Z","shell.execute_reply":"2023-03-02T08:56:01.852684Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:02.717206Z","iopub.execute_input":"2023-03-02T08:56:02.717582Z","iopub.status.idle":"2023-03-02T08:56:02.730148Z","shell.execute_reply.started":"2023-03-02T08:56:02.717549Z","shell.execute_reply":"2023-03-02T08:56:02.729111Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.label.value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:03.372493Z","iopub.execute_input":"2023-03-02T08:56:03.373225Z","iopub.status.idle":"2023-03-02T08:56:03.389073Z","shell.execute_reply.started":"2023-03-02T08:56:03.373182Z","shell.execute_reply":"2023-03-02T08:56:03.388022Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.set_option('display.max_colwidth', None)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:04.749905Z","iopub.execute_input":"2023-03-02T08:56:04.750633Z","iopub.status.idle":"2023-03-02T08:56:04.75649Z","shell.execute_reply.started":"2023-03-02T08:56:04.750592Z","shell.execute_reply":"2023-03-02T08:56:04.755213Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.to_csv('train.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:05.773799Z","iopub.execute_input":"2023-03-02T08:56:05.774523Z","iopub.status.idle":"2023-03-02T08:56:05.999718Z","shell.execute_reply.started":"2023-03-02T08:56:05.774481Z","shell.execute_reply":"2023-03-02T08:56:05.998471Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.memory_usage(index=False)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:07.039363Z","iopub.execute_input":"2023-03-02T08:56:07.040334Z","iopub.status.idle":"2023-03-02T08:56:07.048588Z","shell.execute_reply.started":"2023-03-02T08:56:07.040279Z","shell.execute_reply":"2023-03-02T08:56:07.047512Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:07.551894Z","iopub.execute_input":"2023-03-02T08:56:07.554324Z","iopub.status.idle":"2023-03-02T08:56:07.566319Z","shell.execute_reply.started":"2023-03-02T08:56:07.55427Z","shell.execute_reply":"2023-03-02T08:56:07.565034Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Preparing the image array","metadata":{}},{"cell_type":"code","source":"ls","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:10.295915Z","iopub.execute_input":"2023-03-02T08:56:10.296649Z","iopub.status.idle":"2023-03-02T08:56:11.412939Z","shell.execute_reply.started":"2023-03-02T08:56:10.296608Z","shell.execute_reply":"2023-03-02T08:56:11.411553Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Importing the training .csv file created earlier into a new dataframe df\nimport pandas as pd\ndf=pd.read_csv('train.csv')","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:11.533538Z","iopub.execute_input":"2023-03-02T08:56:11.534002Z","iopub.status.idle":"2023-03-02T08:56:11.746837Z","shell.execute_reply.started":"2023-03-02T08:56:11.533944Z","shell.execute_reply":"2023-03-02T08:56:11.745756Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:14.59915Z","iopub.execute_input":"2023-03-02T08:56:14.600105Z","iopub.status.idle":"2023-03-02T08:56:14.609452Z","shell.execute_reply.started":"2023-03-02T08:56:14.600054Z","shell.execute_reply":"2023-03-02T08:56:14.608015Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:15.270439Z","iopub.execute_input":"2023-03-02T08:56:15.270819Z","iopub.status.idle":"2023-03-02T08:56:15.282455Z","shell.execute_reply.started":"2023-03-02T08:56:15.270786Z","shell.execute_reply":"2023-03-02T08:56:15.28137Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Creating to variables to store no. of rows in each label\n\nclass_ce,class_laa=df.label.value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:16.384705Z","iopub.execute_input":"2023-03-02T08:56:16.385227Z","iopub.status.idle":"2023-03-02T08:56:16.395887Z","shell.execute_reply.started":"2023-03-02T08:56:16.385184Z","shell.execute_reply":"2023-03-02T08:56:16.39433Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class_ce","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:17.268845Z","iopub.execute_input":"2023-03-02T08:56:17.269594Z","iopub.status.idle":"2023-03-02T08:56:17.276366Z","shell.execute_reply.started":"2023-03-02T08:56:17.269552Z","shell.execute_reply":"2023-03-02T08:56:17.275099Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class_laa","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:17.81418Z","iopub.execute_input":"2023-03-02T08:56:17.81458Z","iopub.status.idle":"2023-03-02T08:56:17.826174Z","shell.execute_reply.started":"2023-03-02T08:56:17.814546Z","shell.execute_reply":"2023-03-02T08:56:17.825124Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Creating 2 seperate dataframes for both the labels\ndf_class_ce=df[df['label']=='CE']\ndf_class_laa=df[df['label']=='LAA']","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:18.93174Z","iopub.execute_input":"2023-03-02T08:56:18.932168Z","iopub.status.idle":"2023-03-02T08:56:18.96266Z","shell.execute_reply.started":"2023-03-02T08:56:18.93213Z","shell.execute_reply":"2023-03-02T08:56:18.961701Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_class_ce.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:19.525743Z","iopub.execute_input":"2023-03-02T08:56:19.52658Z","iopub.status.idle":"2023-03-02T08:56:19.533856Z","shell.execute_reply.started":"2023-03-02T08:56:19.526534Z","shell.execute_reply":"2023-03-02T08:56:19.532497Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**class CE has 81630 records and class LAA has 43207 records.**\n\n**Class CE almost has double amount of records than LAA, which is a case of Imbalanced Dataset.**\n\n### What is imbalanced data and how to handle imbalanced dataset?\n\nImbalanced data refers to those types of datasets where the target class has an uneven distribution of observations, i.e one class label has a very high number of observations and the other has a very low number of observations. We can better understand imbalanced dataset handling with an example.\n\n**Example**\n\nLet’s assume that XYZ is a bank that issues a credit card to its customers. Now the bank is concerned that some fraudulent transactions are going on and when the bank checks their data they found that for each 2000 transaction there are only 30 Nos of fraud recorded. So, the number of fraud per 100 transactions is less than 2%, or we can say more than 98% transaction is “No Fraud” in nature. Here, the class “No Fraud” is called the majority class, and the much smaller in size “Fraud” class is called the minority class.\n\n### Resampling(Oversampling and Undersampling)\n\nThis technique is used to upsample or downsample the minority or majority class. When we are using an imbalanced dataset, we can oversample the minority class using replacement. This technique is called oversampling. Similarly, we can randomly delete rows from the majority class to match them with the minority class which is called undersampling. After sampling the data we can get a balanced dataset for both majority and minority classes. So, when both classes have a similar number of records present in the dataset, we can assume that the classifier will give equal importance to both classes.\n\n![95268oversample.jfif](attachment:54167033-7eac-46a3-bcb9-3c06fb3c7d2f.jfif)\n\n![96371undersample.jfif](attachment:29804f9c-a449-4cd2-a3ac-be4062ffc897.jfif)\n\n**Here ,we will oversample the minority class with duplicate synthetic records, i.e LAA and we will undersample the majority class i.e CE.**","metadata":{},"attachments":{"54167033-7eac-46a3-bcb9-3c06fb3c7d2f.jfif":{"image/jpeg":"/9j/4AAQSkZJRgABAQEAYABgAAD/4RD6RXhpZgAATU0AKgAAAAgABAE7AAIAAAAQAAAISodpAAQAAAABAAAIWpydAAEAAAAgAAAQ0uocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNhaWthdCBtYXp1bWRlcgAABZADAAIAAAAUAAAQqJAEAAIAAAAUAAAQvJKRAAIAAAADMzUAAJKSAAIAAAADMzUAAOocAAcAAAgMAAAInAAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIwMjE6MDY6MTkgMjE6NDU6NTUAMjAyMTowNjoxOSAyMTo0NTo1NQAAAHMAYQBpAGsAYQB0ACAAbQBhAHoAdQBtAGQAZQByAAAA/+ELImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMjEtMDYtMTlUMjE6NDU6NTUuMzU0PC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPnNhaWthdCBtYXp1bWRlcjwvcmRmOmxpPjwvcmRmOlNlcT4NCgkJCTwvZGM6Y3JlYXRvcj48L3JkZjpEZXNjcmlwdGlvbj48L3JkZjpSREY+PC94OnhtcG1ldGE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAcFBQYFBAcGBQYIBwcIChELCgkJChUPEAwRGBUaGRgVGBcbHichGx0lHRcYIi4iJSgpKywrGiAvMy8qMicqKyr/2wBDAQcICAoJChQLCxQqHBgcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKir/wAARCADoAp8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6RooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqOckRHHHNSVHP8A6o/WgDmNW8aaXot+bO+kmEoUMQiEjBqj/wALK0H/AJ7XP/fo1xXxH/5HCT/rin8q5SvYpYKlOmpO+p5lTFVIzcUewf8ACytB/wCe1z/36NH/AAsrQf8Antc/9+jXj9Fa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C1r+Z/8AiKP7D8X/APQWtfzP/wARXZUUWD2j7IwPD2k6pY3lzcaxcw3DyoiKYyeACevA9a36KKZDd3cKKKKBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAAehrzv4mWlxd6TZrawSzss5JEaFiBtPpXolcpe+ILq0vprdNHupljYqJFBw3uOK1oycJqS6GdSKnFxZ49/Y2qf8AQNu/+/Df4Uf2Nqn/AEDbv/vw3+Fetf8ACUXn/QBvPyP/AMTR/wAJRef9AG8/I/8AxNej9en/AC/icX1SH8x5L/Y2qf8AQNu/+/Df4Uf2Nqn/AEDbv/vw3+Fetf8ACUXn/QBvPyP/AMTR/wAJRef9AG8/I/8AxNH16f8AL+IfVIfzHkv9jap/0Dbv/vw3+FH9jap/0Dbv/vw3+Fetf8JRef8AQBvPyP8A8TR/wlF5/wBAG8/I/wDxNH16f8v4h9Uh/MeS/wBjap/0Dbv/AL8N/hR/Y2qf9A27/wC/Df4V61/wlF5/0Abz8j/8TR/wlF5/0Abz8j/8TR9en/L+IfVIfzHkv9jap/0Dbv8A78N/hXoPwws7q0j1L7XbTQbjFt82Mrn73TNbP/CUXn/QBvPyP/xNH/CUXn/QBvPyP/xNZVsVOrBwcTSnh405qVxphkuPA+qQwI0ksi3KoijJYktgCvKP+ET1/wD6A95/35Neq2E2r2Gi2wsNKln3tIzrKTuT5zjJPJ47mpP7V8Sf9AE/99GvJq01OWp72DxdTDwtFJ3PJv8AhE9f/wCgPef9+TR/wiev/wDQHvP+/Jr1n+1fEn/QBP8A30aP7V8Sf9AE/wDfRrH6vHudv9q1v5V955N/wiev/wDQHvP+/Jo/4RPX/wDoD3n/AH5Nes/2r4k/6AJ/76NH9q+JP+gCf++jR9Xj3D+1a38q+88m/wCET1//AKA95/35NH/CJ6//ANAe8/78mvWf7V8Sf9AE/wDfRo/tXxJ/0AT/AN9Gj6vHuH9q1v5V955N/wAInr//AEB7z/vyaP8AhE9f/wCgPef9+TXrP9q+JP8AoAn/AL6NH9q+JP8AoAn/AL6NH1ePcP7Vrfyr7zg/BXh7WLLxhYXF3ptzDChfdI8ZAHyMOteo2X/I33P/AF5J/wChtWV/aviT/oAn/vo1d8PjUp9aubvU7FrTMCxqOxwxP9a2hBQVkefiq8sRLnkktLHS0UUVqcIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9k="},"29804f9c-a449-4cd2-a3ac-be4062ffc897.jfif":{"image/jpeg":"/9j/4AAQSkZJRgABAQEAYABgAAD/4RD6RXhpZgAATU0AKgAAAAgABAE7AAIAAAAQAAAISodpAAQAAAABAAAIWpydAAEAAAAgAAAQ0uocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNhaWthdCBtYXp1bWRlcgAABZADAAIAAAAUAAAQqJAEAAIAAAAUAAAQvJKRAAIAAAADNzgAAJKSAAIAAAADNzgAAOocAAcAAAgMAAAInAAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIwMjE6MDY6MTkgMjE6NDQ6MDAAMjAyMTowNjoxOSAyMTo0NDowMAAAAHMAYQBpAGsAYQB0ACAAbQBhAHoAdQBtAGQAZQByAAAA/+ELImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMjEtMDYtMTlUMjE6NDQ6MDAuNzgxPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPnNhaWthdCBtYXp1bWRlcjwvcmRmOmxpPjwvcmRmOlNlcT4NCgkJCTwvZGM6Y3JlYXRvcj48L3JkZjpEZXNjcmlwdGlvbj48L3JkZjpSREY+PC94OnhtcG1ldGE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAcFBQYFBAcGBQYIBwcIChELCgkJChUPEAwRGBUaGRgVGBcbHichGx0lHRcYIi4iJSgpKywrGiAvMy8qMicqKyr/2wBDAQcICAoJChQLCxQqHBgcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKir/wAARCADuAqYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6RooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKc16IAWlkSNAcbnOBUP8AbNr/AM/lt/38H+Ncx8Sv+RSl/wCu6fzrx+u/D4RVoc17HHWxLpS5bH0P/bNr/wA/lt/38H+NH9s2v/P5bf8Afwf4188UV0f2cv5jH66/5T6H/tm1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"}}},{"cell_type":"code","source":"df_class_laa_over=df_class_laa.sample(3000,replace=True)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:21.762685Z","iopub.execute_input":"2023-03-02T08:56:21.763104Z","iopub.status.idle":"2023-03-02T08:56:21.773319Z","shell.execute_reply.started":"2023-03-02T08:56:21.763066Z","shell.execute_reply":"2023-03-02T08:56:21.77216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_class_ce=df_class_ce.sample(3000)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:22.733448Z","iopub.execute_input":"2023-03-02T08:56:22.734628Z","iopub.status.idle":"2023-03-02T08:56:22.744839Z","shell.execute_reply.started":"2023-03-02T08:56:22.734577Z","shell.execute_reply":"2023-03-02T08:56:22.743719Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_class_ce.label.value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:23.451788Z","iopub.execute_input":"2023-03-02T08:56:23.453007Z","iopub.status.idle":"2023-03-02T08:56:23.462627Z","shell.execute_reply.started":"2023-03-02T08:56:23.452936Z","shell.execute_reply":"2023-03-02T08:56:23.461365Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_class_laa_over.label.value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:24.5755Z","iopub.execute_input":"2023-03-02T08:56:24.575907Z","iopub.status.idle":"2023-03-02T08:56:24.585402Z","shell.execute_reply.started":"2023-03-02T08:56:24.575871Z","shell.execute_reply":"2023-03-02T08:56:24.584062Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Revised dataset with equal no. of records of both the classes\ndf=pd.concat([df_class_ce,df_class_laa_over],axis=0)\ndf.label.value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:25.170447Z","iopub.execute_input":"2023-03-02T08:56:25.170891Z","iopub.status.idle":"2023-03-02T08:56:25.184315Z","shell.execute_reply.started":"2023-03-02T08:56:25.170847Z","shell.execute_reply":"2023-03-02T08:56:25.183154Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df=df.reset_index()\ndf.head(10)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:26.323697Z","iopub.execute_input":"2023-03-02T08:56:26.324099Z","iopub.status.idle":"2023-03-02T08:56:26.33753Z","shell.execute_reply.started":"2023-03-02T08:56:26.324064Z","shell.execute_reply":"2023-03-02T08:56:26.336378Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.drop(['index'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:26.990926Z","iopub.execute_input":"2023-03-02T08:56:26.991698Z","iopub.status.idle":"2023-03-02T08:56:27.000155Z","shell.execute_reply.started":"2023-03-02T08:56:26.991659Z","shell.execute_reply":"2023-03-02T08:56:26.999132Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# print(\"Max\",train_data.max())\n# print(\"Min\",train_data.min())\n# print(\"Datatype Before\",train_data.dtype)\n# print(\"Size in byte Before\",train_data.nbytes)\n# train_data=train_data.astype('float16')\n# print(train_data.dtype)\n# print(train_data.nbytes)\n# print(train_data.shape)\n# print(train_data.size)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:28.287332Z","iopub.execute_input":"2023-03-02T08:56:28.287715Z","iopub.status.idle":"2023-03-02T08:56:28.292953Z","shell.execute_reply.started":"2023-03-02T08:56:28.287681Z","shell.execute_reply":"2023-03-02T08:56:28.291681Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import gc\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:29.006882Z","iopub.execute_input":"2023-03-02T08:56:29.00767Z","iopub.status.idle":"2023-03-02T08:56:29.256384Z","shell.execute_reply.started":"2023-03-02T08:56:29.007623Z","shell.execute_reply":"2023-03-02T08:56:29.255213Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:30.26093Z","iopub.execute_input":"2023-03-02T08:56:30.26208Z","iopub.status.idle":"2023-03-02T08:56:30.270057Z","shell.execute_reply.started":"2023-03-02T08:56:30.262015Z","shell.execute_reply":"2023-03-02T08:56:30.268754Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.set_option('display.max_colwidth', None)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:30.908182Z","iopub.execute_input":"2023-03-02T08:56:30.908578Z","iopub.status.idle":"2023-03-02T08:56:30.914356Z","shell.execute_reply.started":"2023-03-02T08:56:30.90854Z","shell.execute_reply":"2023-03-02T08:56:30.913053Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.sample(10)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:32.028038Z","iopub.execute_input":"2023-03-02T08:56:32.028427Z","iopub.status.idle":"2023-03-02T08:56:32.043784Z","shell.execute_reply.started":"2023-03-02T08:56:32.028395Z","shell.execute_reply":"2023-03-02T08:56:32.042469Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Now we are taking the list of image file paths, loading each image, resizing it, \n# and storing it inside X_train list.\n\nfrom PIL import Image\nimport csv\nX_train=[]\nfor i in tqdm(df['filepath']):\n    image=Image.open(i)\n    image = tf.image.resize(image,(224, 224))\n    image = np.array(image)\n#     image=image.astype('float16')\n#     image=image/255\n    X_train.append(image)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T08:56:33.023511Z","iopub.execute_input":"2023-03-02T08:56:33.023906Z","iopub.status.idle":"2023-03-02T09:00:07.988999Z","shell.execute_reply.started":"2023-03-02T08:56:33.023869Z","shell.execute_reply":"2023-03-02T09:00:07.987736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Converting the list to numpy array\nX_train=np.array(X_train)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:00:14.436919Z","iopub.execute_input":"2023-03-02T09:00:14.43736Z","iopub.status.idle":"2023-03-02T09:00:18.371793Z","shell.execute_reply.started":"2023-03-02T09:00:14.437322Z","shell.execute_reply":"2023-03-02T09:00:18.37064Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"type(X_train)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:00:21.151762Z","iopub.execute_input":"2023-03-02T09:00:21.152495Z","iopub.status.idle":"2023-03-02T09:00:21.160378Z","shell.execute_reply.started":"2023-03-02T09:00:21.152454Z","shell.execute_reply":"2023-03-02T09:00:21.159034Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"type(X_train[0][0][0][0])\n","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:00:23.953878Z","iopub.execute_input":"2023-03-02T09:00:23.954622Z","iopub.status.idle":"2023-03-02T09:00:23.961666Z","shell.execute_reply.started":"2023-03-02T09:00:23.95458Z","shell.execute_reply":"2023-03-02T09:00:23.960605Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Converting the datatype from float64 to uint8, as it is more memory efficient.\n\nprint(\"Max\",X_train.max())\nprint(\"Min\",X_train.min())\nprint(\"Datatype Before\",X_train.dtype)\nprint(\"Size in byte Before\",X_train.nbytes)\nX_train=X_train.astype('uint8')\nprint(X_train.dtype)\nprint(X_train.nbytes)\nprint(X_train.shape)\nprint(X_train.size)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:00:32.969508Z","iopub.execute_input":"2023-03-02T09:00:32.970545Z","iopub.status.idle":"2023-03-02T09:00:34.454651Z","shell.execute_reply.started":"2023-03-02T09:00:32.970487Z","shell.execute_reply":"2023-03-02T09:00:34.453315Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Preparing the y_train from 'target' column\ny_train=df['target'][:6000]","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:08:24.486232Z","iopub.execute_input":"2023-03-02T09:08:24.487224Z","iopub.status.idle":"2023-03-02T09:08:24.492915Z","shell.execute_reply.started":"2023-03-02T09:08:24.487179Z","shell.execute_reply":"2023-03-02T09:08:24.4914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Creating convolutional neural network (CNN) model using the Keras API within TensorFlow\n\n- The Sequential() function initializes an empty sequential model object that we can add layers to sequentially.\n\n- The next line input_shape=(224,224,4) defines the shape of the input images that will be fed into the model. \n\n- The input shape is a 224x224 RGB image (3 channels for red, green, and blue) with an additional channel that is not specified.\n\n- The next few lines add convolutional layers to the model using the Conv2D() function. \n\n- The first layer has 32 filters of size 3x3, a stride of 2, 'same' padding, and uses the ReLU activation function. \n\n- The input shape is specified using the input_shape variable defined earlier. \n\n- The subsequent layers are similar, with 64 and 32 filters respectively.\n\n- The Flatten() layer flattens the output of the convolutional layers into a 1D array.\n\n- The next line model.add(Dense(128,activation='relu')) adds a fully connected layer with 128 units and a ReLU activation function.\n\n- The Dropout(0.25) layer applies dropout regularization to the previous layer, randomly dropping out 25% of the inputs during training to prevent overfitting.\n\n- The final Dense(1) layer is the output layer of the model, with a single output unit that will predict a numerical value.\n\n- The model.compile() function compiles the model, specifying the loss function, metrics to evaluate during training, and optimizer to use during training. In this case, the mean squared error loss function is used, along with the root mean squared error, mean absolute error, and mean absolute percentage error as evaluation metrics. The Adam optimizer with a learning rate of 1e-3 is used to update the model parameters during training.","metadata":{}},{"cell_type":"code","source":"model=keras.Sequential()\ninput_shape=(224,224,4)\n\nmodel.add(Conv2D(filters=32,kernel_size=(3,3),strides=2,padding='same',activation='relu',input_shape=input_shape))\nmodel.add(Conv2D(filters=64, kernel_size = (3,3), strides =2, padding = 'same', activation = 'relu'))\nmodel.add(Conv2D(filters=32, kernel_size = (3,3), strides =2, padding = 'same', activation = 'relu'))\nmodel.add(Flatten())\nmodel.add(Dense(128,activation='relu'))\nmodel.add(Dropout(0.25))\n\n\nmodel.add(Dense(1))\n\nmodel.compile(\n    loss=tf.keras.losses.MeanSquaredError(),\n    metrics=[tf.keras.metrics.RootMeanSquaredError(name='rmse'),'mae','mape'],\n    optimizer=tf.keras.optimizers.Adam(1e-3))","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:00:48.036865Z","iopub.execute_input":"2023-03-02T09:00:48.03809Z","iopub.status.idle":"2023-03-02T09:00:48.224919Z","shell.execute_reply.started":"2023-03-02T09:00:48.038033Z","shell.execute_reply":"2023-03-02T09:00:48.223445Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"> Overall, the above code defines a relatively simple CNN model for regression tasks, consisting of convolutional and fully connected layers with ReLU activation functions, dropout regularization, and a single output unit with mean squared error loss. ","metadata":{}},{"cell_type":"code","source":"model","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:07:43.975102Z","iopub.execute_input":"2023-03-02T09:07:43.975783Z","iopub.status.idle":"2023-03-02T09:07:43.983361Z","shell.execute_reply.started":"2023-03-02T09:07:43.975738Z","shell.execute_reply":"2023-03-02T09:07:43.982039Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:08:31.717457Z","iopub.execute_input":"2023-03-02T09:08:31.718467Z","iopub.status.idle":"2023-03-02T09:08:31.726606Z","shell.execute_reply.started":"2023-03-02T09:08:31.718424Z","shell.execute_reply":"2023-03-02T09:08:31.725315Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_train,x_test,y_train,y_test=train_test_split(X_train,y_train,test_size=0.2)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:08:35.423767Z","iopub.execute_input":"2023-03-02T09:08:35.42419Z","iopub.status.idle":"2023-03-02T09:08:35.70465Z","shell.execute_reply.started":"2023-03-02T09:08:35.424143Z","shell.execute_reply":"2023-03-02T09:08:35.703462Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Training the Model","metadata":{}},{"cell_type":"code","source":"%%time\n\nimport math\nfrom tensorflow.keras.callbacks import LearningRateScheduler, EarlyStopping,Callback\n\n'''The step_decay function defines a learning rate schedule that decreases the learning rate by a factor \nof 0.5 every 10 epochs. It takes an argument epoch that represents the current epoch number, and returns \nthe updated learning rate for that epoch.'''\n\ndef step_decay(epoch):\n    initial_lrate=0.001\n    drop=0.5\n    epochs_drop=10.0\n    lrate=initial_lrate * math.pow(drop,math.floor((epoch)/epochs_drop))\n    return lrate\n\n'''The LearningRateScheduler callback is created with the step_decay function, \nand will update the learning rate at the beginning of each epoch during training.'''\n\nlrate=LearningRateScheduler(step_decay)\n\n'''The EarlyStopping callback is also created to monitor the validation loss during training, and stop \ntraining if the validation loss does not improve for 5 consecutive epochs.'''\n\nearstop=EarlyStopping(monitor='val_loss',min_delta=0,patience=5)\n\n'''The model.fit() method is used to train the model. It takes the training data x_train and y_train, \nas well as the number of epochs, batch size, and validation data x_test and y_test. The callbacks \nparameter is set to a list of the two previously created callbacks: lrate and earstop.'''\n\nhistory=model.fit(\n    x_train,\n    y_train,\n    epochs=50,\n    batch_size=64,\n    validation_data=(x_test,y_test),\n    verbose=1,\n    callbacks=[lrate,earstop]\n)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:09:15.672559Z","iopub.execute_input":"2023-03-02T09:09:15.672983Z","iopub.status.idle":"2023-03-02T09:10:12.218124Z","shell.execute_reply.started":"2023-03-02T09:09:15.672934Z","shell.execute_reply":"2023-03-02T09:10:12.216955Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Garbage Collection to free up memory not in use\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:11:02.088444Z","iopub.execute_input":"2023-03-02T09:11:02.088873Z","iopub.status.idle":"2023-03-02T09:11:39.342894Z","shell.execute_reply.started":"2023-03-02T09:11:02.088836Z","shell.execute_reply":"2023-03-02T09:11:39.341819Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Test Dataset\ntest_df.head()","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:12:32.581301Z","iopub.execute_input":"2023-03-02T09:12:32.582212Z","iopub.status.idle":"2023-03-02T09:12:32.599721Z","shell.execute_reply.started":"2023-03-02T09:12:32.582166Z","shell.execute_reply":"2023-03-02T09:12:32.598513Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"'''The purpose of this function is to preprocess an image file located at image_path'''\n\ndef preprocess(image_path):\n    \n    '''This line uses the OpenSlide library to open the image file located at image_path and create a slide object that represents the whole image'''\n    \n    slide=OpenSlide(image_path)\n    \n    '''This line sets the region variable to a tuple representing the top-left corner of a rectangular \n    region of the image that we want to extract. In this case, the region starts 1000 pixels to the right\n    and 1000 pixels down from the top-left corner of the image.'''\n    \n    region= (1000,1000)    \n    \n    '''This line sets the size variable to a tuple representing the width and height of the rectangular \n    region that we want to extract. In this case, the region has a width and height of 5000 pixels.'''\n    \n    size  = (5000, 5000)\n    \n    '''This line extracts the rectangular region specified by region and size from the slide object using\n    the read_region method. The third argument (0) specifies the level of the image pyramid to use, where \n    0 means the original full-resolution image.'''\n    \n    image = slide.read_region(region, 0, size)\n    \n    '''This line uses TensorFlow's tf.image.resize function to resize the extracted region to a smaller \n    size of (224, 224). This is a common size used by many neural networks for image classification.'''\n    \n    image = tf.image.resize(image, (224, 224))\n    \n    image = np.array(image)    \n    return image","metadata":{"execution":{"iopub.status.busy":"2023-03-02T10:19:09.546986Z","iopub.execute_input":"2023-03-02T10:19:09.547743Z","iopub.status.idle":"2023-03-02T10:19:09.555697Z","shell.execute_reply.started":"2023-03-02T10:19:09.5477Z","shell.execute_reply":"2023-03-02T10:19:09.554573Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import openslide #import openslide library for reading whole-slide images.\nfrom openslide import OpenSlide # import OpenSlide Class open and extract regions.\nfrom openslide import open_slide # import open_slide function\n\n'''This line imports the DeepZoomGenerator class from the openslide.deepzoom module, which provides a way\nto generate a tiled pyramid of images from a whole-slide image.'''\n\nfrom openslide.deepzoom import DeepZoomGenerator \n\ntest1=[]# to store pre-processed image\n\nfor i in tqdm(test_df['file_path']):\n    x1=preprocess(i)\n    test1.append(x1)\n    gc.collect()\ntest1=np.array(test1)","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:12:45.201872Z","iopub.execute_input":"2023-03-02T09:12:45.202639Z","iopub.status.idle":"2023-03-02T09:13:05.0805Z","shell.execute_reply.started":"2023-03-02T09:12:45.202596Z","shell.execute_reply":"2023-03-02T09:13:05.079172Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# test1=test1/255","metadata":{"execution":{"iopub.status.busy":"2023-03-01T12:02:41.359564Z","iopub.execute_input":"2023-03-01T12:02:41.360281Z","iopub.status.idle":"2023-03-01T12:02:41.364701Z","shell.execute_reply.started":"2023-03-01T12:02:41.360242Z","shell.execute_reply":"2023-03-01T12:02:41.363573Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test1.shape","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:17:32.494924Z","iopub.execute_input":"2023-03-02T09:17:32.495387Z","iopub.status.idle":"2023-03-02T09:17:32.502372Z","shell.execute_reply.started":"2023-03-02T09:17:32.495347Z","shell.execute_reply":"2023-03-02T09:17:32.501225Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Predict the test dataset using the model\ncnn_pred=model.predict(test1)\ncnn_pred","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:17:34.55662Z","iopub.execute_input":"2023-03-02T09:17:34.557248Z","iopub.status.idle":"2023-03-02T09:17:34.733009Z","shell.execute_reply.started":"2023-03-02T09:17:34.557204Z","shell.execute_reply":"2023-03-02T09:17:34.731999Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# creating the dataframe to generate submission file\n\nsub = pd.DataFrame(test_df[\"patient_id\"].copy())\nsub[\"CE\"] = cnn_pred\nsub[\"CE\"] = sub[\"CE\"].apply(lambda x : 0 if x<0 else x)\nsub[\"CE\"] = sub[\"CE\"].apply(lambda x : 1 if x>1 else x)\nsub[\"LAA\"] = 1- sub[\"CE\"]\n\nsub = sub.groupby(\"patient_id\").mean()\nsub = sub[[\"CE\", \"LAA\"]].round(6).reset_index()\n\nsub","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:17:39.021847Z","iopub.execute_input":"2023-03-02T09:17:39.023049Z","iopub.status.idle":"2023-03-02T09:17:39.052314Z","shell.execute_reply.started":"2023-03-02T09:17:39.022995Z","shell.execute_reply":"2023-03-02T09:17:39.051041Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# storing the submission df to .csv file.\nsub.to_csv(\"submission.csv\", index = False)\n!head submission.csv\n","metadata":{"execution":{"iopub.status.busy":"2023-03-02T09:17:43.883851Z","iopub.execute_input":"2023-03-02T09:17:43.884613Z","iopub.status.idle":"2023-03-02T09:17:44.976081Z","shell.execute_reply.started":"2023-03-02T09:17:43.884567Z","shell.execute_reply":"2023-03-02T09:17:44.974747Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}