{"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 glob\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport os\nimport cv2\nimport gc\nfrom PIL import Image\nimport seaborn as sns\nimport warnings\n\nwarnings.filterwarnings(\"ignore\", category=FutureWarning)\nsns.set()\nImage.MAX_IMAGE_PIXELS = None\n\nplt.rcParams['axes.labelsize'] = 6\nplt.rcParams['axes.titlesize'] = 16","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-24T08:23:54.824978Z","iopub.execute_input":"2022-07-24T08:23:54.825467Z","iopub.status.idle":"2022-07-24T08:23:54.834889Z","shell.execute_reply.started":"2022-07-24T08:23:54.825434Z","shell.execute_reply":"2022-07-24T08:23:54.833615Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Data Structuring","metadata":{}},{"cell_type":"code","source":"train_csv = pd.read_csv(r'../input/mayo-clinic-strip-ai/train.csv')\ntest_csv = pd.read_csv(r'../input/mayo-clinic-strip-ai/test.csv')\ntrain_images = glob.glob(r'../input/mayo-clinic-strip-ai/train/*')\ntest_images = glob.glob(r'../input/mayo-clinic-strip-ai/test/*')\n\ntrain_image_paths = []\ntrain_image_ids = []\n\ntest_image_paths = []\ntest_image_ids = []\n\nfor i in train_images:\n    train_image_paths.append(i)\n    train_image_ids.append(os.path.splitext(os.path.basename(i))[0])\n\nfor i in test_images:\n    test_image_paths.append(i)\n    test_image_ids.append(os.path.splitext(os.path.basename(i))[0])\n\ntrain_df = pd.DataFrame.from_dict({'train_image_paths':train_image_paths,\n                                 'image_id':train_image_ids})\n\ntest_df = pd.DataFrame.from_dict({'test_image_paths':test_image_paths,\n                                 'image_id':test_image_ids})","metadata":{"execution":{"iopub.status.busy":"2022-07-24T07:44:00.154938Z","iopub.execute_input":"2022-07-24T07:44:00.155929Z","iopub.status.idle":"2022-07-24T07:44:00.177218Z","shell.execute_reply.started":"2022-07-24T07:44:00.15589Z","shell.execute_reply":"2022-07-24T07:44:00.176188Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df_data = pd.merge(train_df, train_csv, on='image_id')\ntest_df_data = pd.merge(test_df, test_csv, on='image_id')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T07:44:00.52002Z","iopub.execute_input":"2022-07-24T07:44:00.520452Z","iopub.status.idle":"2022-07-24T07:44:00.533243Z","shell.execute_reply.started":"2022-07-24T07:44:00.520416Z","shell.execute_reply":"2022-07-24T07:44:00.532214Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# This dataframe have all the details about train data\ntrain_df_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T07:44:00.939864Z","iopub.execute_input":"2022-07-24T07:44:00.940261Z","iopub.status.idle":"2022-07-24T07:44:00.953838Z","shell.execute_reply.started":"2022-07-24T07:44:00.940226Z","shell.execute_reply":"2022-07-24T07:44:00.952662Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(f'Class Labels : {train_df_data[\"label\"].unique()}')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T07:44:02.165172Z","iopub.execute_input":"2022-07-24T07:44:02.165766Z","iopub.status.idle":"2022-07-24T07:44:02.172135Z","shell.execute_reply.started":"2022-07-24T07:44:02.165722Z","shell.execute_reply":"2022-07-24T07:44:02.171115Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# This dataframe have all the details about test data\ntest_df_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T08:16:19.827708Z","iopub.execute_input":"2022-07-24T08:16:19.828084Z","iopub.status.idle":"2022-07-24T08:16:19.844461Z","shell.execute_reply.started":"2022-07-24T08:16:19.828053Z","shell.execute_reply":"2022-07-24T08:16:19.84354Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# EDA","metadata":{}},{"cell_type":"markdown","source":"### >> Distribution of class labels","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(6,6))\nsns.countplot(train_df_data.label)\nplt.show()\n\nprint('Dataset percentage for each class :')\nprint(train_df_data.label.value_counts() / train_df_data.shape[0])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T08:05:15.560923Z","iopub.execute_input":"2022-07-24T08:05:15.562667Z","iopub.status.idle":"2022-07-24T08:05:15.746495Z","shell.execute_reply.started":"2022-07-24T08:05:15.562618Z","shell.execute_reply":"2022-07-24T08:05:15.745118Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### *The dataset is not balanced*","metadata":{}},{"cell_type":"markdown","source":"# Visualization","metadata":{}},{"cell_type":"code","source":"class VisualizeData:\n    \n    @staticmethod\n    def visualize_train_data(train_dataframe,label='any'):\n        if label != 'any':\n            train_dataframe = train_dataframe[train_dataframe['label']==label]\n        data = train_dataframe.sample(6)\n        plt.figure(figsize=(15,15))\n        for i in range(6):\n            plt.subplot(2,3,i+1)\n            img = Image.open(data.iloc[i]['train_image_paths'])\n            fac = int(max(img.size)/224)\n            h, w = img.size\n            plt.imshow(img.resize((int(h/fac), int(w/fac))))\n            plt.title(f'label: {data.iloc[i].label}, image_size: {img.size}')\n            plt.xlabel(f'image_id : {data.iloc[i].image_id}')\n            del img, fac\n            gc.collect()\n        plt.tight_layout()\n        plt.show()\n        \n    @staticmethod\n    def visualize_test_data(test_dataframe):\n        data = test_dataframe.sample(4)\n        plt.figure(figsize=(15,15))\n        for i in range(4):\n            plt.subplot(2,3,i+1)\n            img = Image.open(data.iloc[i]['test_image_paths'])\n            fac = int(max(img.size)/224)\n            h, w = img.size\n            plt.imshow(img.resize((int(h/fac), int(w/fac))))\n            plt.title(f'image_size : {img.size}')\n            plt.xlabel(f'image_id : {data.iloc[i].image_id}')\n            del img, fac\n            gc.collect()\n        plt.tight_layout()\n        plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T08:24:03.06551Z","iopub.execute_input":"2022-07-24T08:24:03.065885Z","iopub.status.idle":"2022-07-24T08:24:03.078497Z","shell.execute_reply.started":"2022-07-24T08:24:03.065856Z","shell.execute_reply":"2022-07-24T08:24:03.077193Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"VD = VisualizeData()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T08:24:04.978376Z","iopub.execute_input":"2022-07-24T08:24:04.978775Z","iopub.status.idle":"2022-07-24T08:24:04.985725Z","shell.execute_reply.started":"2022-07-24T08:24:04.978742Z","shell.execute_reply":"2022-07-24T08:24:04.984242Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"VD.visualize_train_data(train_df_data)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T08:24:06.281872Z","iopub.execute_input":"2022-07-24T08:24:06.282837Z","iopub.status.idle":"2022-07-24T08:25:45.31855Z","shell.execute_reply.started":"2022-07-24T08:24:06.282787Z","shell.execute_reply":"2022-07-24T08:25:45.317264Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"VD.visualize_test_data(test_df_data)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T08:25:45.32067Z","iopub.execute_input":"2022-07-24T08:25:45.321334Z","iopub.status.idle":"2022-07-24T08:27:36.047778Z","shell.execute_reply.started":"2022-07-24T08:25:45.321289Z","shell.execute_reply":"2022-07-24T08:27:36.046384Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}