{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"_kg_hide-input":false},"cell_type":"code","source":"%matplotlib inline\nfrom IPython.core.interactiveshell import InteractiveShell\nInteractiveShell.ast_node_interactivity = \"all\"\nimport ast\nimport os\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom tqdm import tqdm","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"def f2cat(filename: str) -> str:\n    return filename.split('.')[0]\n\nclass Simplified():\n    def __init__(self, input_path='./input'):\n        self.input_path = input_path\n\n    def list_all_categories(self):\n        files = os.listdir(os.path.join(self.input_path, 'train_simplified'))\n        return [f2cat(f) for f in files]\n\n    def read_training_csv(self, category, nrows=None, usecols=None, drawing_transform=False):\n        df = pd.read_csv(os.path.join(self.input_path, 'train_simplified', category + '.csv'),\n                         nrows=nrows, parse_dates=['timestamp'], usecols=usecols)\n        if drawing_transform:\n            df['drawing'] = df['drawing'].apply(ast.literal_eval)\n        return df","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"443d84891247f770f35486496546da9ee5f68fe0"},"cell_type":"code","source":"s = Simplified('../input/')\ncategories = s.list_all_categories()\nlen(categories)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d84c2a190588bbb1b2f20dc1ae389bcd74243dca"},"cell_type":"code","source":"df = s.read_training_csv('owl', nrows=100, drawing_transform=True)\ndf.head()\ndf.shape","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"896c27c521a0b2721e8f2274a47b8c5002f10e22"},"cell_type":"markdown","source":"## Let's check the first 100 owls"},{"metadata":{"trusted":true,"_uuid":"93e4c90c26b9e3f691ff9f2d54865cc43d541c73"},"cell_type":"code","source":"n = 10\nfig, axs = plt.subplots(nrows=n, ncols=n, sharex=True, sharey=True, figsize=(16, 10))\nfor i, row in df[: n * n].iterrows():\n    ax = axs[i // n, i % n]\n    for x, y in row.drawing:\n        color = 'green' if row.recognized else 'red'\n        ax.plot(x, -np.array(y), lw=3, color=color)\n    ax.axis('off')\nplt.suptitle('Recognized and unrecognized owls')\nplt.show();","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a1e3a5479038acf55d18f3d9de0e605f35d936d9","_kg_hide-input":true},"cell_type":"code","source":"def plot_category_samples(df, category, n=10):\n    fig, axs = plt.subplots(nrows=n, ncols=n, sharex=True, sharey=True, figsize=(16, 10))\n    for i, row in df[: n * n].iterrows():\n        ax = axs[i // n, i % n]\n        for x, y in row.drawing:\n            color = 'green' if row.recognized else 'red'\n            ax.plot(x, -np.array(y), lw=3, color=color)\n        ax.axis('off')\n    plt.suptitle(category)\n    fig.savefig('{}.png'.format(category), dpi=100)\n    plt.close('all')\n    plt.gcf()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"ccc872d7dffaaa6dbbb3b5877b1283e441973278"},"cell_type":"markdown","source":"## Please check other animal examples on the Output page"},{"metadata":{"trusted":true,"_uuid":"9ab2df1837b584462a500e281ae85b6cef07cc91"},"cell_type":"code","source":"animals = [\n    'ant', 'bat', 'bear', 'bee', 'bird', 'butterfly', 'camel', 'cat', 'cow', 'crab', 'crocodile', 'dog',\n    'dolphin', 'dragon', 'duck', 'elephant', 'fish', 'flamingo', 'frog', 'giraffe', 'hedgehog', 'horse',\n    'kangaroo', 'lion', 'lobster', 'monkey', 'mosquito', 'mouse', 'octopus', 'owl', 'panda', 'parrot', 'penguin',\n    'pig', 'rabbit', 'raccoon', 'rhinoceros', 'scorpion', 'sea turtle', 'shark', 'sheep', 'snail', 'snake',\n    'spider', 'squirrel', 'swan', 'teddy-bear', 'tiger', 'whale', 'zebra'\n]\nfor animal in tqdm(animals):\n    df = s.read_training_csv(animal, nrows=100, drawing_transform=True)\n    plot_category_samples(df, animal, n=10)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}