{"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":"code","source":"import os\nimport cv2\nimport random\nimport warnings\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nfrom sklearn.metrics import confusion_matrix, cohen_kappa_score,classification_report\nfrom keras.models import Model,load_model\nfrom keras import optimizers, applications\nfrom keras.preprocessing.image import ImageDataGenerator\nfrom keras.callbacks import EarlyStopping, ReduceLROnPlateau\nfrom keras.layers import Dense, Dropout, GlobalAveragePooling2D, Input\n\n# Set seeds to make the experiment more reproducible.\nimport tensorflow as tf\ndef seed_everything(seed=0):\n    random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    np.random.seed(seed)\n    tf.random.set_seed(0)\nseed_everything()\n\n%matplotlib inline\nsns.set(style=\"whitegrid\")\nwarnings.filterwarnings(\"ignore\")","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_kg_hide-input":true,"_kg_hide-output":true,"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":5.421035,"end_time":"2022-02-10T17:38:33.327544","exception":false,"start_time":"2022-02-10T17:38:27.906509","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:33:05.69774Z","iopub.execute_input":"2023-03-04T19:33:05.698351Z","iopub.status.idle":"2023-03-04T19:33:15.153175Z","shell.execute_reply.started":"2023-03-04T19:33:05.698316Z","shell.execute_reply":"2023-03-04T19:33:15.152104Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Load data","metadata":{"_kg_hide-output":true,"papermill":{"duration":0.029456,"end_time":"2022-02-10T17:38:33.388544","exception":false,"start_time":"2022-02-10T17:38:33.359088","status":"completed"},"tags":[]}},{"cell_type":"code","source":"train = pd.read_csv('../input/aptos2019-blindness-detection/train.csv')\ntest = pd.read_csv('../input/aptos2019-blindness-detection/test.csv')","metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_kg_hide-input":false,"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","papermill":{"duration":0.054664,"end_time":"2022-02-10T17:38:33.472918","exception":false,"start_time":"2022-02-10T17:38:33.418254","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:33:15.155396Z","iopub.execute_input":"2023-03-04T19:33:15.156301Z","iopub.status.idle":"2023-03-04T19:33:15.181427Z","shell.execute_reply.started":"2023-03-04T19:33:15.156253Z","shell.execute_reply":"2023-03-04T19:33:15.180473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('Number of train samples: ', train.shape[0])\nprint('Number of test samples: ', test.shape[0])\ndisplay(train.head())","metadata":{"_kg_hide-input":true,"papermill":{"duration":0.056645,"end_time":"2022-02-10T17:38:33.618505","exception":false,"start_time":"2022-02-10T17:38:33.56186","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:33:18.506226Z","iopub.execute_input":"2023-03-04T19:33:18.506882Z","iopub.status.idle":"2023-03-04T19:33:18.527376Z","shell.execute_reply.started":"2023-03-04T19:33:18.506825Z","shell.execute_reply":"2023-03-04T19:33:18.525984Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.set_style(\"white\")\ncount = 1\nplt.figure(figsize=[20, 20])\nfor img_name in train['id_code'][:15]:\n    img = cv2.imread(\"../input/aptos2019-blindness-detection/train_images/%s.png\" % img_name)[...,[2, 1, 0]]\n    plt.subplot(5, 5, count)\n    plt.imshow(img)\n    plt.title(\"Image %s\" % count)\n    count += 1\n    \nplt.show()","metadata":{"_kg_hide-input":true,"papermill":{"duration":10.600001,"end_time":"2022-02-10T17:38:44.691894","exception":false,"start_time":"2022-02-10T17:38:34.091893","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:33:19.278922Z","iopub.execute_input":"2023-03-04T19:33:19.279627Z","iopub.status.idle":"2023-03-04T19:33:31.440849Z","shell.execute_reply.started":"2023-03-04T19:33:19.279588Z","shell.execute_reply":"2023-03-04T19:33:31.439935Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Model parameters","metadata":{"papermill":{"duration":0.04821,"end_time":"2022-02-10T17:38:44.788927","exception":false,"start_time":"2022-02-10T17:38:44.740717","status":"completed"},"tags":[]}},{"cell_type":"code","source":"# Model parameters\nBATCH_SIZE = 8\nEPOCHS = 15\nWARMUP_EPOCHS = 2\nLEARNING_RATE = 1e-4\nWARMUP_LEARNING_RATE = 1e-3\nHEIGHT = 728\nWIDTH = 728\nCANAL = 3\nN_CLASSES = train['diagnosis'].nunique()\nES_PATIENCE = 5\nRLROP_PATIENCE = 3\nDECAY_DROP = 0.5\nprint(N_CLASSES)","metadata":{"papermill":{"duration":0.058585,"end_time":"2022-02-10T17:38:44.897493","exception":false,"start_time":"2022-02-10T17:38:44.838908","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:33:31.442346Z","iopub.execute_input":"2023-03-04T19:33:31.442651Z","iopub.status.idle":"2023-03-04T19:33:31.454245Z","shell.execute_reply.started":"2023-03-04T19:33:31.44262Z","shell.execute_reply":"2023-03-04T19:33:31.453126Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Preprocecss data\ntrain[\"id_code\"] = train[\"id_code\"].apply(lambda x: x + \".png\")\ntest[\"id_code\"] = test[\"id_code\"].apply(lambda x: x + \".png\")\ntrain['diagnosis'] = train['diagnosis'].astype('str')\ntrain.head()","metadata":{"papermill":{"duration":0.069404,"end_time":"2022-02-10T17:38:45.017435","exception":false,"start_time":"2022-02-10T17:38:44.948031","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:33:31.456025Z","iopub.execute_input":"2023-03-04T19:33:31.456786Z","iopub.status.idle":"2023-03-04T19:33:31.47869Z","shell.execute_reply.started":"2023-03-04T19:33:31.45673Z","shell.execute_reply":"2023-03-04T19:33:31.477216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Data generator","metadata":{"papermill":{"duration":0.048733,"end_time":"2022-02-10T17:38:45.114669","exception":false,"start_time":"2022-02-10T17:38:45.065936","status":"completed"},"tags":[]}},{"cell_type":"code","source":"train_datagen=ImageDataGenerator(rescale=1./255, \n                                 validation_split=0.2,\n                                 horizontal_flip=True)\n\ntrain_generator=train_datagen.flow_from_dataframe(\n    dataframe=train,\n    directory=\"../input/aptos2019-blindness-detection/train_images/\",\n    x_col=\"id_code\",\n    y_col=\"diagnosis\",\n    batch_size=BATCH_SIZE,\n    class_mode=\"categorical\",\n    target_size=(HEIGHT, WIDTH),\n    subset='training')\n\nvalid_generator=train_datagen.flow_from_dataframe(\n    dataframe=train,\n    directory=\"../input/aptos2019-blindness-detection/train_images/\",\n    x_col=\"id_code\",\n    y_col=\"diagnosis\",\n    batch_size=BATCH_SIZE,\n    class_mode=\"categorical\",    \n    target_size=(HEIGHT, WIDTH),\n    subset='validation')\n\ntest_datagen = ImageDataGenerator(rescale=1./255)\n\ntest_generator = test_datagen.flow_from_dataframe(  \n        dataframe=test,\n        directory = \"../input/aptos2019-blindness-detection/test_images/\",\n        x_col=\"id_code\",\n        target_size=(HEIGHT, WIDTH),\n        batch_size=1,\n        shuffle=False,\n        class_mode=None)","metadata":{"_kg_hide-input":true,"papermill":{"duration":3.862533,"end_time":"2022-02-10T17:38:49.027079","exception":false,"start_time":"2022-02-10T17:38:45.164546","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:33:31.481817Z","iopub.execute_input":"2023-03-04T19:33:31.482906Z","iopub.status.idle":"2023-03-04T19:33:41.430943Z","shell.execute_reply.started":"2023-03-04T19:33:31.482832Z","shell.execute_reply":"2023-03-04T19:33:41.429782Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Model","metadata":{"papermill":{"duration":0.048932,"end_time":"2022-02-10T17:38:49.124593","exception":false,"start_time":"2022-02-10T17:38:49.075661","status":"completed"},"tags":[]}},{"cell_type":"code","source":"import warnings\nwarnings.filterwarnings(\"ignore\")\nwarnings.filterwarnings(\"ignore\", category=UserWarning)\nwarnings.filterwarnings(\"ignore\", category=FutureWarning)\n\nimport numpy as np\nimport pandas as pd \nimport matplotlib.pyplot as plt\nimport keras.utils as image\n%matplotlib inline\nimport seaborn as sns\nimport cv2 \nimport glob\nimport random\nfrom os import listdir\nimport tensorflow.compat.v2 as tf\ntf.keras.preprocessing.image.load_img\n\nfrom sklearn.metrics import classification_report\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, Conv2D,MaxPooling2D, Flatten, Dropout, BatchNormalization\nfrom tensorflow.keras.optimizers import SGD\nfrom tensorflow.keras.optimizers import Adam, SGD\nfrom keras.metrics import binary_crossentropy\nfrom tensorflow.keras.callbacks import EarlyStopping\nfrom sklearn.metrics import confusion_matrix\nimport itertools","metadata":{"execution":{"iopub.status.busy":"2023-03-04T19:33:41.432469Z","iopub.execute_input":"2023-03-04T19:33:41.432825Z","iopub.status.idle":"2023-03-04T19:33:41.703245Z","shell.execute_reply.started":"2023-03-04T19:33:41.432777Z","shell.execute_reply":"2023-03-04T19:33:41.702321Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"early_stop=EarlyStopping(monitor='val_loss',patience=5)\nmodel = Sequential()\nmodel.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(728, 728, 3)))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\nmodel.add(MaxPooling2D((2, 2)))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.3))\nmodel.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D((2, 2)))\nmodel.add(Dropout(0.3))\nmodel.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\nmodel.add(Flatten())\nmodel.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))\nmodel.add(BatchNormalization())\nmodel.add(Dense(64, activation='relu', kernel_initializer='he_uniform'))\nmodel.add(BatchNormalization())\nmodel.add(Dense(64, activation='relu', kernel_initializer='he_uniform'))\nmodel.add(Dropout(0.3))\nmodel.add(Dense(24, activation='relu', kernel_initializer='he_uniform'))\nmodel.add(Dense(5, activation='softmax'))","metadata":{"execution":{"iopub.status.busy":"2023-03-04T19:33:41.704681Z","iopub.execute_input":"2023-03-04T19:33:41.705041Z","iopub.status.idle":"2023-03-04T19:33:44.7747Z","shell.execute_reply.started":"2023-03-04T19:33:41.705005Z","shell.execute_reply":"2023-03-04T19:33:44.773699Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(Adam(learning_rate=0.0001), loss='binary_crossentropy', metrics=['accuracy'])\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2023-03-04T19:33:44.77631Z","iopub.execute_input":"2023-03-04T19:33:44.776672Z","iopub.status.idle":"2023-03-04T19:33:44.853571Z","shell.execute_reply.started":"2023-03-04T19:33:44.776635Z","shell.execute_reply":"2023-03-04T19:33:44.852776Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"STEP_SIZE_TRAIN = train_generator.n//train_generator.batch_size\nSTEP_SIZE_VALID = valid_generator.n//valid_generator.batch_size\n\nhistory_warmup = model.fit_generator(generator=train_generator,\n                                     steps_per_epoch=50,\n                                     validation_data=valid_generator,\n                                     validation_steps=30,\n                                     epochs=15,\n                                     verbose=1).history","metadata":{"_kg_hide-output":true,"papermill":{"duration":1022.364579,"end_time":"2022-02-10T17:55:56.456867","exception":false,"start_time":"2022-02-10T17:38:54.092288","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T19:35:19.772449Z","iopub.execute_input":"2023-03-04T19:35:19.773066Z","iopub.status.idle":"2023-03-04T20:08:38.922145Z","shell.execute_reply.started":"2023-03-04T19:35:19.773026Z","shell.execute_reply":"2023-03-04T20:08:38.920234Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Model loss graph ","metadata":{"papermill":{"duration":0.556579,"end_time":"2022-02-10T18:34:32.023386","exception":false,"start_time":"2022-02-10T18:34:31.466807","status":"completed"},"tags":[]}},{"cell_type":"code","source":"history = {'loss': history_warmup['loss'] , \n           'val_loss': history_warmup['val_loss'] , \n           'accuracy': history_warmup['accuracy'] , \n           'val_accuracy': history_warmup['val_accuracy'] }\n\nsns.set_style(\"whitegrid\")\nfig, (ax1, ax2) = plt.subplots(2, 1, sharex='col', figsize=(20, 14))\n\nax1.plot(history['loss'], label='Train loss')\nax1.plot(history['val_loss'], label='Validation loss')\nax1.legend(loc='best')\nax1.set_title('Loss')\n\nax2.plot(history['accuracy'], label='Train Accuracy')\nax2.plot(history['val_accuracy'], label='Validation accuracy')\nax2.legend(loc='best')\nax2.set_title('Accuracy')\n\nplt.xlabel('Epochs')\nsns.despine()\nplt.show()","metadata":{"_kg_hide-input":true,"papermill":{"duration":0.956544,"end_time":"2022-02-10T18:34:33.555447","exception":false,"start_time":"2022-02-10T18:34:32.598903","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:12:12.389253Z","iopub.execute_input":"2023-03-04T20:12:12.389842Z","iopub.status.idle":"2023-03-04T20:12:12.924694Z","shell.execute_reply.started":"2023-03-04T20:12:12.389796Z","shell.execute_reply":"2023-03-04T20:12:12.923364Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.save(\"./my_model.h5\")","metadata":{"papermill":{"duration":2.664103,"end_time":"2022-02-10T18:34:36.779235","exception":false,"start_time":"2022-02-10T18:34:34.115132","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:12:21.729018Z","iopub.execute_input":"2023-03-04T20:12:21.729747Z","iopub.status.idle":"2023-03-04T20:12:53.264547Z","shell.execute_reply.started":"2023-03-04T20:12:21.729706Z","shell.execute_reply":"2023-03-04T20:12:53.263402Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Model Evaluation","metadata":{"papermill":{"duration":0.836132,"end_time":"2022-02-10T18:34:38.165586","exception":false,"start_time":"2022-02-10T18:34:37.329454","status":"completed"},"tags":[]}},{"cell_type":"code","source":"complete_datagen = ImageDataGenerator(rescale=1./255)\ncomplete_generator = complete_datagen.flow_from_dataframe(  \n        dataframe=train,\n        directory = \"../input/aptos2019-blindness-detection/train_images/\",\n        x_col=\"id_code\",\n        target_size=(HEIGHT, WIDTH),\n        batch_size=1,\n        shuffle=False,\n        class_mode=None)\n\nSTEP_SIZE_COMPLETE = complete_generator.n//complete_generator.batch_size\ntrain_preds = model.predict_generator(complete_generator, steps=STEP_SIZE_COMPLETE)\ntrain_preds = [np.argmax(pred) for pred in train_preds]","metadata":{"_kg_hide-input":true,"papermill":{"duration":423.762797,"end_time":"2022-02-10T18:41:42.491257","exception":false,"start_time":"2022-02-10T18:34:38.72846","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:13:10.129558Z","iopub.execute_input":"2023-03-04T20:13:10.130521Z","iopub.status.idle":"2023-03-04T20:21:26.293962Z","shell.execute_reply.started":"2023-03-04T20:13:10.130458Z","shell.execute_reply":"2023-03-04T20:21:26.29281Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Confusion Matrix","metadata":{"papermill":{"duration":0.579405,"end_time":"2022-02-10T18:41:43.680888","exception":false,"start_time":"2022-02-10T18:41:43.101483","status":"completed"},"tags":[]}},{"cell_type":"code","source":"labels = ['0 - No DR', '1 - Mild', '2 - Moderate', '3 - Severe', '4 - Proliferative DR']\ncnf_matrix = confusion_matrix(train['diagnosis'].astype('int'), train_preds)\ncnf_matrix_norm = cnf_matrix.astype('float') / cnf_matrix.sum(axis=1)[:, np.newaxis]\ndf_cm = pd.DataFrame(cnf_matrix_norm, index=labels, columns=labels)\nplt.figure(figsize=(16, 7))\nsns.heatmap(df_cm, annot=True, fmt='.2f', cmap=\"Blues\")\nplt.show()","metadata":{"_kg_hide-input":true,"papermill":{"duration":0.952836,"end_time":"2022-02-10T18:41:45.206723","exception":false,"start_time":"2022-02-10T18:41:44.253887","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:27:12.619263Z","iopub.execute_input":"2023-03-04T20:27:12.61965Z","iopub.status.idle":"2023-03-04T20:27:12.983892Z","shell.execute_reply.started":"2023-03-04T20:27:12.619618Z","shell.execute_reply":"2023-03-04T20:27:12.982881Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(classification_report(train['diagnosis'].astype('int'), train_preds))","metadata":{"papermill":{"duration":0.57136,"end_time":"2022-02-10T18:41:46.347775","exception":false,"start_time":"2022-02-10T18:41:45.776415","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:27:16.011377Z","iopub.execute_input":"2023-03-04T20:27:16.011768Z","iopub.status.idle":"2023-03-04T20:27:16.032946Z","shell.execute_reply.started":"2023-03-04T20:27:16.011733Z","shell.execute_reply":"2023-03-04T20:27:16.031894Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Quadratic Weighted Kappa","metadata":{"papermill":{"duration":0.587523,"end_time":"2022-02-10T18:41:47.774553","exception":false,"start_time":"2022-02-10T18:41:47.18703","status":"completed"},"tags":[]}},{"cell_type":"code","source":"print(\"Train Cohen Kappa score: %.3f\" % cohen_kappa_score(train_preds, train['diagnosis'].astype('int'), weights='quadratic'))","metadata":{"_kg_hide-input":true,"papermill":{"duration":0.56455,"end_time":"2022-02-10T18:41:48.914238","exception":false,"start_time":"2022-02-10T18:41:48.349688","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:27:24.840945Z","iopub.execute_input":"2023-03-04T20:27:24.841362Z","iopub.status.idle":"2023-03-04T20:27:24.854483Z","shell.execute_reply.started":"2023-03-04T20:27:24.841327Z","shell.execute_reply":"2023-03-04T20:27:24.853487Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Apply model to test set and output predictions","metadata":{"papermill":{"duration":0.556884,"end_time":"2022-02-10T18:41:50.051673","exception":false,"start_time":"2022-02-10T18:41:49.494789","status":"completed"},"tags":[]}},{"cell_type":"code","source":"test_generator.reset()\nSTEP_SIZE_TEST = test_generator.n//test_generator.batch_size\npreds = model.predict_generator(test_generator, steps=STEP_SIZE_TEST,verbose =1)\npredictions = [np.argmax(pred) for pred in preds]","metadata":{"papermill":{"duration":138.467092,"end_time":"2022-02-10T18:44:09.074413","exception":false,"start_time":"2022-02-10T18:41:50.607321","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:27:27.827086Z","iopub.execute_input":"2023-03-04T20:27:27.827463Z","iopub.status.idle":"2023-03-04T20:29:12.76878Z","shell.execute_reply.started":"2023-03-04T20:27:27.827429Z","shell.execute_reply":"2023-03-04T20:29:12.767735Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"filenames = test_generator.filenames\nresults = pd.DataFrame({'id_code':filenames, 'diagnosis':predictions})\nresults['id_code'] = results['id_code'].map(lambda x: str(x)[:-4])\nresults.to_csv('submission.csv',index=False)\nresults.head(10)","metadata":{"papermill":{"duration":0.914709,"end_time":"2022-02-10T18:44:11.194544","exception":false,"start_time":"2022-02-10T18:44:10.279835","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:29:21.71754Z","iopub.execute_input":"2023-03-04T20:29:21.717931Z","iopub.status.idle":"2023-03-04T20:29:21.75255Z","shell.execute_reply.started":"2023-03-04T20:29:21.717896Z","shell.execute_reply":"2023-03-04T20:29:21.751223Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Predictions class distribution","metadata":{"papermill":{"duration":0.865767,"end_time":"2022-02-10T18:44:12.924579","exception":false,"start_time":"2022-02-10T18:44:12.058812","status":"completed"},"tags":[]}},{"cell_type":"code","source":"f, ax = plt.subplots(figsize=(14, 8.7))\nax = sns.countplot(x=\"diagnosis\", data=results, palette=\"GnBu_d\")\nsns.despine()\nplt.show()","metadata":{"_kg_hide-input":true,"papermill":{"duration":1.007986,"end_time":"2022-02-10T18:44:14.768547","exception":false,"start_time":"2022-02-10T18:44:13.760561","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-03-04T20:29:26.973369Z","iopub.execute_input":"2023-03-04T20:29:26.973753Z","iopub.status.idle":"2023-03-04T20:29:27.228821Z","shell.execute_reply.started":"2023-03-04T20:29:26.973718Z","shell.execute_reply":"2023-03-04T20:29:27.227777Z"},"trusted":true},"execution_count":null,"outputs":[]}]}