{"cells":[{"metadata":{},"cell_type":"markdown","source":"# **Simple EDA** of Cassava Leaf Disease Classification Competition"},{"metadata":{},"cell_type":"markdown","source":"[competition link](https://www.kaggle.com/c/cassava-leaf-disease-classification)"},{"metadata":{"trusted":true},"cell_type":"code","source":"#Packages\n\nimport os\nimport json\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nfrom pathlib import Path\nimport cv2\nimport albumentations as A\nfrom sklearn import metrics as sk_metrics","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#set direction\nBASE_DIR = Path(\"../input/cassava-leaf-disease-classification\")\ntrain_img_dir = BASE_DIR /'train_images'\ntest_img_dir = BASE_DIR /'test_images'","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"#read data\ndf_train = pd.read_csv(os.path.join(BASE_DIR, \"train.csv\"))\ndf_train.head(10)\ndiseaseNames = pd.read_json(BASE_DIR/'label_num_to_disease_map.json', typ='series',dtype={\"label\": pd.Int32Dtype})","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Sneak peak at df_train dataset and diseaseNames dataset"},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# train images total: 21397\ndf_train.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"diseaseNames","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Add new column named 'name' base on diseaseNames"},{"metadata":{"trusted":true},"cell_type":"code","source":"diseaseMap = diseaseNames.to_dict()\ndf_train['name'] = df_train['label'].map(diseaseMap)\ndf_train.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Check frequency:"},{"metadata":{},"cell_type":"markdown","source":"from the plot and the value counts we are able to see that the training dataset is imbalance, we need to take this into account when train this data."},{"metadata":{"trusted":true},"cell_type":"code","source":"fig, ax = plt.subplots()\ndf_train['name'].value_counts().plot(ax=ax,kind='barh')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Look at exact numbers of each labels\ndf_train['name'].value_counts()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Split into different labels"},{"metadata":{"trusted":true},"cell_type":"code","source":"healthyImages = df_train[df_train['name'] == 'Healthy']['image_id'].to_list()\ncbbImages = df_train[df_train['name'] == 'Cassava Bacterial Blight (CBB)']['image_id'].to_list()\ncbsdImages = df_train[df_train['name'] == 'Cassava Brown Streak Disease (CBSD)']['image_id'].to_list()\ncgmImages = df_train[df_train['name'] == 'Cassava Green Mottle (CGM)']['image_id'].to_list()\ncmdImages = df_train[df_train['name'] == 'Cassava Mosaic Disease (CMD)']['image_id'].to_list()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"''' code modified from Parul Pandey's notebook\nhttps://www.kaggle.com/parulpandey/melanoma-classification-eda-starter\n'''\ndef showImages(images):\n\n    # Extract random images from it\n    random_images = np.random.choice(images)\n\n    # Iterate and plot random images\n    img = plt.imread(train_img_dir/random_images)\n    plt.imshow(img, cmap='gray')\n    plt.axis('off')\n\n    # Adjust subplot parameters to give specified padding\n    plt.tight_layout()   ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def showSize(images):\n    \n    random_images = np.random.choice(images)\n    img = plt.imread(train_img_dir/random_images)\n    print(img.shape)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Take a look at each label images and image sizes"},{"metadata":{"trusted":true},"cell_type":"code","source":"showImages(cbbImages)\nshowSize(cbbImages)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"showImages(cbsdImages)\nshowSize(cbsdImages)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"showImages(cgmImages)\nshowSize(cgmImages)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"showImages(cmdImages)\nshowSize(cmdImages)","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}