{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport json\nimport pandas as pd\nimport numpy as np\nimport seaborn as sns \nimport matplotlib.pyplot as plt\nfrom pathlib import Path \nfrom keras.preprocessing.image import load_img","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\ndef get_image_from_imgname(imgname):\n    return load_img(\"/kaggle/input/cassava-leaf-disease-classification/train_images/\" + imgname)\n    \n    \n    \ndef sample_from_df_by_label(df, label, size_sample):\n    one_label_df = df[df['label_names'] == label]\n    return one_label_df.sample(size_sample)\n    \ndef sample_x_image_from_each_label(DS, x):\n    dict_labels = dict(DS['label_names'].value_counts())\n    \n    samples = []\n    labels = []\n    for label in dict_labels:\n        samples.append(sample_from_df_by_label(DS, label, size_sample))\n        labels.append(label)\n    \n    return samples, labels\n    \ndef show_img_with_title(img, title, ax):\n    ax.imshow(img)\n    ax.title.set_text(title)\n    ax.axis(\"off\")\n    \n    \n    \ndef calc_mean_color_value_of_imgs_ls(imgs_ls, mean_by_axis):\n    red = np.stack([img[:, :, 0].ravel() for img in imgs_ls]).mean(axis=mean_by_axis)\n    green = np.stack([img[:, :, 1].ravel() for img in imgs_ls]).mean(axis=mean_by_axis)\n    blue = np.stack([img[:, :, 2].ravel() for img in imgs_ls]).mean(axis=mean_by_axis)\n    return red, green, blue\n\n\ndef make_ls_of_imgarray_from_sample(sample):\n    imgs =  []\n    for imgname in sample[\"image_id\"]:\n        img = np.array(get_image_from_imgname(imgname))\n        imgs.append(img)\n    return imgs","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"BASE_DIR = Path('/kaggle/input/cassava-leaf-disease-classification')\n\n# Reading DataFrame having Labels\nDS = pd.read_csv(BASE_DIR/'train.csv')\n\n# Label Mappings\nwith open(BASE_DIR/'label_num_to_disease_map.json') as f:\n    mapping = json.loads(f.read())\n    mapping = {int(k): v for k,v in mapping.items()}\n\nprint(mapping)\n\n\nDS['label_names'] = DS['label'].map(mapping)\nDS.head(255)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# image dimensions"},{"metadata":{"trusted":true},"cell_type":"code","source":"fig, ax = plt.subplots(figsize = (10,6))\nimage = get_image_from_imgname(DS.loc[21000, \"image_id\"])\nplt.imshow(image)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Sample photos by category"},{"metadata":{"trusted":true},"cell_type":"code","source":"size_sample = 4\nsamples, k = sample_x_image_from_each_label(DS, size_sample)\n\n\nfig, axes = plt.subplots(size_sample ,5 , figsize=(20, size_sample*5))\ncounter_place = 0\n\nfor sample in samples:\n    for i,(_, row) in enumerate(sample.iterrows()):\n        image = get_image_from_imgname(row.image_id)\n        show_img_with_title(image, row.label_names, axes[i, counter_place])\n    counter_place +=1\n    \nfig.tight_layout()\nplt.show()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Distribution of classes in the array"},{"metadata":{"trusted":true},"cell_type":"code","source":"fig, ax = plt.subplots(figsize = (10,6))\n\nsns.countplot(y=DS[\"label_names\"], orient='v')\nplt.title('Target distribution')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# MEAN Color distribution by categories"},{"metadata":{"trusted":true},"cell_type":"code","source":"fig, axs = plt.subplots(1 ,5 , figsize=(20,5)) \n\nsamples, labels= sample_x_image_from_each_label(DS, 2000)\n\n\nfor i in range(len(samples)):\n    imgs_ls = make_ls_of_imgarray_from_sample(samples[i])\n    red, green, blue = calc_mean_color_value_of_imgs_ls(imgs_ls, 0)\n    sns.kdeplot(red, alpha=0.5, color='red', ax=axs[i])\n    sns.kdeplot(green, alpha=0.5, color='green', ax=axs[i])\n    sns.kdeplot(blue, alpha=0.5, color='blue', ax=axs[i])\n    axs[i].set_title(labels[i])","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}