{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":14774,"databundleVersionId":875431,"sourceType":"competition"},{"sourceId":556303,"sourceType":"datasetVersion","datasetId":266957},{"sourceId":556726,"sourceType":"datasetVersion","datasetId":267272},{"sourceId":8257748,"sourceType":"datasetVersion","datasetId":4900794}],"dockerImageVersionId":30683,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"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.model_selection import train_test_split, StratifiedKFold\n\n# Set seeds to make the experiment more reproducible.\ndef seed_everything(seed=0):\n    random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    np.random.seed(seed)\n    \nseed = 0\nseed_everything(seed)\n\n%matplotlib inline\nsns.set(style=\"whitegrid\")\nwarnings.filterwarnings(\"ignore\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-08-26T02:25:22.449122Z","iopub.execute_input":"2024-08-26T02:25:22.449480Z","iopub.status.idle":"2024-08-26T02:25:24.898896Z","shell.execute_reply.started":"2024-08-26T02:25:22.449452Z","shell.execute_reply":"2024-08-26T02:25:24.898131Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.read_csv('/kaggle/input/aptos2019-blindness-detection/train.csv')\ntest_df = pd.read_csv('/kaggle/input/aptos2019-blindness-detection/test.csv')\nprint('Number of train samples: ', train_df.shape[0])\nprint('Number of test samples: ', test_df.shape[0])\ndisplay(train_df.head())","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:25:24.900746Z","iopub.execute_input":"2024-08-26T02:25:24.901291Z","iopub.status.idle":"2024-08-26T02:25:24.938197Z","shell.execute_reply.started":"2024-08-26T02:25:24.901255Z","shell.execute_reply":"2024-08-26T02:25:24.937293Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import cv2\n\nfor index, row in train_df.iterrows():\n    img = cv2.imread('/kaggle/input/aptos2019-blindness-detection/train_images/%s.png' % row['id_code'], cv2.IMREAD_UNCHANGED)\n    train_df.at[index, 'height'] = img.shape[0]\n    train_df.at[index, 'width'] = img.shape[1]\n    \nfor index, row in test_df.iterrows():\n    img = cv2.imread('/kaggle/input/aptos2019-blindness-detection/test_images/%s.png' % row['id_code'], cv2.IMREAD_UNCHANGED)\n    test_df.at[index, 'height'] = img.shape[0]\n    test_df.at[index, 'width'] = img.shape[1]\n    \ndisplay(train_df.head())\n","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:25:24.939417Z","iopub.execute_input":"2024-08-26T02:25:24.939757Z","iopub.status.idle":"2024-08-26T02:33:11.461834Z","shell.execute_reply.started":"2024-08-26T02:25:24.939722Z","shell.execute_reply":"2024-08-26T02:33:11.460942Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train, validation = train_test_split(train_df, test_size=0.2, random_state=seed)","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:33:11.463777Z","iopub.execute_input":"2024-08-26T02:33:11.464078Z","iopub.status.idle":"2024-08-26T02:33:11.475012Z","shell.execute_reply.started":"2024-08-26T02:33:11.464038Z","shell.execute_reply":"2024-08-26T02:33:11.473992Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, (ax1, ax2) = plt.subplots(1, 2, sharex='col', figsize=(24, 8.7))\nsns.countplot(x=\"diagnosis\", data=train, ax=ax1).set_title('Train')\nsns.countplot(x=\"diagnosis\", data=validation, ax=ax2).set_title('Validation')\nsns.despine()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:33:36.981327Z","iopub.execute_input":"2024-08-26T02:33:36.981772Z","iopub.status.idle":"2024-08-26T02:33:37.587006Z","shell.execute_reply.started":"2024-08-26T02:33:36.981745Z","shell.execute_reply":"2024-08-26T02:33:37.586039Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['set'] = 'train'\nvalidation['set'] = 'validation'\ntrain_complete = pd.concat([train, validation], ignore_index=True)\n\ntrain_complete.to_csv('hold-out.csv', index=False)\ntrain_complete.head()","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:33:41.373435Z","iopub.execute_input":"2024-08-26T02:33:41.374037Z","iopub.status.idle":"2024-08-26T02:33:41.407471Z","shell.execute_reply.started":"2024-08-26T02:33:41.374002Z","shell.execute_reply":"2024-08-26T02:33:41.406569Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"folds = StratifiedKFold(n_splits=5, shuffle=True, random_state=seed)\n\nfor fold_n, (trn_idx, val_idx) in enumerate(folds.split(train_df, train_df['diagnosis'])):\n    print('Fold: %s, Train size: %s, Validation size %s' % \n          (fold_n, len(trn_idx), len(val_idx)))\n    train_df[('fold_%s' % fold_n)] = 0\n    train_df[('fold_%s' % fold_n)].loc[trn_idx] = 'train'\n    train_df[('fold_%s' % fold_n)].loc[val_idx] = 'validation'\n    \ndisplay(train_df.head())","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:33:45.294890Z","iopub.execute_input":"2024-08-26T02:33:45.295598Z","iopub.status.idle":"2024-08-26T02:33:45.327891Z","shell.execute_reply.started":"2024-08-26T02:33:45.295567Z","shell.execute_reply":"2024-08-26T02:33:45.327010Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for fold_n, (trn_idx, val_idx) in enumerate(folds.split(train_df, train_df['diagnosis'])):\n    fig, (ax1, ax2) = plt.subplots(1, 2, sharex='col', figsize=(24, 6))\n    fig.suptitle('Fold%s'%fold_n, fontsize=22)    \n    sns.countplot(x=\"diagnosis\", data=train_df[train_df[('fold_%s' % fold_n)] == 'train'], ax=ax1).set_title('Train')\n    sns.countplot(x=\"diagnosis\", data=train_df[train_df[('fold_%s' % fold_n)] == 'validation'], ax=ax2).set_title('Validation')\n    sns.despine()\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:34:07.924481Z","iopub.execute_input":"2024-08-26T02:34:07.925214Z","iopub.status.idle":"2024-08-26T02:34:10.563464Z","shell.execute_reply.started":"2024-08-26T02:34:07.925183Z","shell.execute_reply":"2024-08-26T02:34:10.562536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.to_csv('5-fold.csv', index=False)\ntrain_df.head()","metadata":{"execution":{"iopub.status.busy":"2024-08-26T02:34:15.842415Z","iopub.execute_input":"2024-08-26T02:34:15.842775Z","iopub.status.idle":"2024-08-26T02:34:15.881280Z","shell.execute_reply.started":"2024-08-26T02:34:15.842747Z","shell.execute_reply":"2024-08-26T02:34:15.880370Z"},"trusted":true},"execution_count":null,"outputs":[]}]}