{"cells":[{"metadata":{},"cell_type":"markdown","source":"# work in progress"},{"metadata":{"trusted":true},"cell_type":"code","source":"%reload_ext autoreload\n%autoreload 2\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"thanks to [this kernel](https://www.kaggle.com/xhlulu/recursion-2019-load-resize-and-save-images) and [this dataset](https://www.kaggle.com/xhlulu/recursion-cellular-image-classification-224-jpg)"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport sys\nimport zipfile\n\nimport pandas as pd\nimport numpy as np\n\nfrom fastai import *\nfrom fastai.vision import *\n\nfrom tqdm import tqdm\n\nfrom pathlib import Path\nfrom PIL import Image","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# hide warnings\nimport warnings\nwarnings.simplefilter('ignore')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"os.listdir(\"../input\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"input_dir = Path(\"../input/recursion-cellular-image-classification-224-jpg\")\ninput_dir1 = Path(\"../input/recursion-cellular-image-classification\")\nprint(os.listdir(input_dir))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_dir = input_dir/\"train/train\"\ntest_dir = input_dir/\"test/test\"\nprint(os.listdir(train_dir)[:3])\nprint(os.listdir(test_dir)[:3])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_csv = pd.read_csv(input_dir/\"new_train.csv\")\ntrain_csv = train_csv[[\"filename\", \"sirna\"]]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_dataset = ImageList.from_folder(input_dir/\"test/test\")\ntfms = get_transforms(do_flip=False)\ndata = ImageDataBunch.from_df(\n    path = input_dir,\n    df = train_csv,\n    folder = \"train/train\",\n    valid_pct = 0.2,\n    bs = 32,\n    size = 224,\n    ds_tfms = tfms,\n    num_workers = 0\n)\ndata.add_test(test_dataset)\ndata.normalize(imagenet_stats)\nprint(data)\nprint(len(data.classes))\ndata.show_batch(rows=3, figsize=(10,10))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn = cnn_learner(data, models.resnet101, metrics=accuracy, model_dir=\"/tmp/models\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn.fit_one_cycle(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class_score, y = learn.get_preds(DatasetType.Test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_submission = pd.read_csv(input_dir1/\"sample_submission.csv\")\nsample_submission.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class_score","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_submission.id_code.values[0] in os.listdir(test_dir)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"all_test_files = [element[:-8] for element in os.listdir(test_dir)]\nall_test_files[:5]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_class_score_both(id_code):\n    index1 = all_test_files.index(id_code)\n    index2 = all_test_files.index(id_code, index1+1)\n    sum_class_score = class_score[index1] + class_score[index2]\n    avg_class_score = sum_class_score / 2\n    return(avg_class_score)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_class_score_s1(id_code):\n    index1 = all_test_files.index(id_code)\n    index2 = all_test_files.index(id_code, index1+1)\n    sum_class_score = class_score[index1] + class_score[index2]\n    avg_class_score = sum_class_score / 2\n    return(avg_class_score)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_class_score_s2(id_code):\n    index1 = all_test_files.index(id_code)\n    index2 = all_test_files.index(id_code, index1+1)\n    sum_class_score = class_score[index1] + class_score[index2]\n    avg_class_score = sum_class_score / 2\n    return(avg_class_score)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x = list(map(get_class_score_both, sample_submission.id_code.values))\nx = torch.stack(x)\nx = x.argmax(dim=1)\nx","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission  = pd.DataFrame({\n    \"id_code\": sample_submission.id_code,\n    \"sirna\": x\n})\nsubmission.to_csv(\"submission.csv\", index=False)\nsubmission[:10]","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":1}