{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip install vit_pytorch\n!pip install timm\n!pip install linformer","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:09:21.419814Z","iopub.execute_input":"2022-09-07T04:09:21.420196Z","iopub.status.idle":"2022-09-07T04:09:53.868744Z","shell.execute_reply.started":"2022-09-07T04:09:21.420088Z","shell.execute_reply":"2022-09-07T04:09:53.867413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from __future__ import print_function\n\nimport glob\nfrom itertools import chain\nimport os\nimport random\nimport zipfile\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom linformer import Linformer\nfrom PIL import Image\nfrom sklearn.model_selection import train_test_split\nfrom torch.optim.lr_scheduler import StepLR\nfrom torch.utils.data import DataLoader, Dataset\nfrom torchvision import datasets, transforms\nfrom tqdm.notebook import tqdm\n\nfrom vit_pytorch.efficient import ViT\nimport seaborn as sns #←これを追加\nimport timm #←これを追加","metadata":{"papermill":{"duration":null,"end_time":null,"exception":null,"start_time":null,"status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-09-07T04:09:53.871482Z","iopub.execute_input":"2022-09-07T04:09:53.873442Z","iopub.status.idle":"2022-09-07T04:10:02.003867Z","shell.execute_reply.started":"2022-09-07T04:09:53.873394Z","shell.execute_reply":"2022-09-07T04:10:02.002457Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Training settings\nbatch_size = 64\nepochs = 20\nlr = 3e-5\ngamma = 0.7\nseed = 42","metadata":{"papermill":{"duration":null,"end_time":null,"exception":null,"start_time":null,"status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-09-07T04:10:02.005726Z","iopub.execute_input":"2022-09-07T04:10:02.007318Z","iopub.status.idle":"2022-09-07T04:10:02.015973Z","shell.execute_reply.started":"2022-09-07T04:10:02.007274Z","shell.execute_reply":"2022-09-07T04:10:02.014807Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def seed_everything(seed):\n    random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    torch.cuda.manual_seed(seed)\n    torch.cuda.manual_seed_all(seed)\n    torch.backends.cudnn.deterministic = True\n\nseed_everything(seed)\ndevice = 'cuda'","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:02.019144Z","iopub.execute_input":"2022-09-07T04:10:02.019689Z","iopub.status.idle":"2022-09-07T04:10:02.044057Z","shell.execute_reply.started":"2022-09-07T04:10:02.019649Z","shell.execute_reply":"2022-09-07T04:10:02.042738Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# データセットの作成","metadata":{}},{"cell_type":"code","source":"train_dir = \"../input/jpg-images-strip-ai/train\"\ntest_dir = \"../input/jpg-images-strip-ai/test\"\n\ntrain_list = glob.glob(os.path.join(train_dir,'*.jpg'))\ntest_list = glob.glob(os.path.join(test_dir, '*.jpg'))\n\nprint(f\"Train Data: {len(train_list)}\")\nprint(f\"Test Data: {len(test_list)}\")","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:02.046048Z","iopub.execute_input":"2022-09-07T04:10:02.046479Z","iopub.status.idle":"2022-09-07T04:10:02.347632Z","shell.execute_reply.started":"2022-09-07T04:10:02.046443Z","shell.execute_reply":"2022-09-07T04:10:02.346655Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_list2 = [path.split('/')[-1].split('.')[0] for path in train_list]","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:02.34924Z","iopub.execute_input":"2022-09-07T04:10:02.349591Z","iopub.status.idle":"2022-09-07T04:10:02.35715Z","shell.execute_reply.started":"2022-09-07T04:10:02.349556Z","shell.execute_reply":"2022-09-07T04:10:02.356134Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_csv = pd.read_csv(\"/kaggle/input/mayo-clinic-strip-ai/train.csv\")\ntrain_labels = train_csv['label'].tolist()\ntrain_image_id = train_csv['image_id'].tolist()","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:02.358642Z","iopub.execute_input":"2022-09-07T04:10:02.359339Z","iopub.status.idle":"2022-09-07T04:10:02.382355Z","shell.execute_reply.started":"2022-09-07T04:10:02.359301Z","shell.execute_reply":"2022-09-07T04:10:02.381355Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_dict= dict(zip(train_image_id,train_labels))","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:02.383755Z","iopub.execute_input":"2022-09-07T04:10:02.384329Z","iopub.status.idle":"2022-09-07T04:10:02.390921Z","shell.execute_reply.started":"2022-09-07T04:10:02.384291Z","shell.execute_reply":"2022-09-07T04:10:02.389796Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels = []\nfor i in train_list2:\n    labels.append(train_dict[i])","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:02.392431Z","iopub.execute_input":"2022-09-07T04:10:02.392937Z","iopub.status.idle":"2022-09-07T04:10:02.400833Z","shell.execute_reply.started":"2022-09-07T04:10:02.392903Z","shell.execute_reply":"2022-09-07T04:10:02.399843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_idx = np.random.randint(1, len(train_list), size=9)\nfig, axes = plt.subplots(3, 3, figsize=(16, 12))\n\nfor idx, ax in enumerate(axes.ravel()):\n    img = Image.open(train_list[idx])\n    ax.set_title(labels[idx])\n    ax.imshow(img)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:02.406316Z","iopub.execute_input":"2022-09-07T04:10:02.406625Z","iopub.status.idle":"2022-09-07T04:10:04.53639Z","shell.execute_reply.started":"2022-09-07T04:10:02.406598Z","shell.execute_reply":"2022-09-07T04:10:04.535151Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_list, valid_list = train_test_split(train_list, \n                                          test_size=0.2,\n                                          stratify=labels,\n                                          random_state=seed)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.538136Z","iopub.execute_input":"2022-09-07T04:10:04.538501Z","iopub.status.idle":"2022-09-07T04:10:04.555111Z","shell.execute_reply.started":"2022-09-07T04:10:04.538467Z","shell.execute_reply":"2022-09-07T04:10:04.553753Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(f\"Train Data: {len(train_list)}\")\nprint(f\"Validation Data: {len(valid_list)}\")\nprint(f\"Test Data: {len(test_list)}\")","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.556857Z","iopub.execute_input":"2022-09-07T04:10:04.557277Z","iopub.status.idle":"2022-09-07T04:10:04.567579Z","shell.execute_reply.started":"2022-09-07T04:10:04.557238Z","shell.execute_reply":"2022-09-07T04:10:04.566467Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_transforms = transforms.Compose(\n    [\n        transforms.Resize((224, 224)),\n        transforms.RandomResizedCrop(224),\n        transforms.RandomHorizontalFlip(),\n        transforms.ToTensor(),\n    ]\n)\n\nval_transforms = transforms.Compose(\n    [\n        transforms.Resize(256),\n        transforms.CenterCrop(224),\n        transforms.ToTensor(),\n    ]\n)\n\n\ntest_transforms = transforms.Compose(\n    [\n        transforms.Resize(256),\n        transforms.CenterCrop(224),\n        transforms.ToTensor(),\n    ]\n)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.569418Z","iopub.execute_input":"2022-09-07T04:10:04.570307Z","iopub.status.idle":"2022-09-07T04:10:04.583431Z","shell.execute_reply.started":"2022-09-07T04:10:04.570267Z","shell.execute_reply":"2022-09-07T04:10:04.582349Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import csv\n\nwith open(\"/kaggle/input/mayo-clinic-strip-ai/train.csv\") as f:\n    reader = csv.reader(f)\n    line = [row for row in reader]\n    line = np.array(line[1:])\n    id = list(line[:,0])\n    label_list = list(line[:,-1])","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.585265Z","iopub.execute_input":"2022-09-07T04:10:04.587139Z","iopub.status.idle":"2022-09-07T04:10:04.602303Z","shell.execute_reply.started":"2022-09-07T04:10:04.587087Z","shell.execute_reply":"2022-09-07T04:10:04.601187Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import re\n\nclass MayoDataset(Dataset):\n    def __init__(self, file_list, transform=None):\n        self.file_list = file_list\n        self.transform = transform\n\n    def __len__(self):\n        self.filelength = len(self.file_list)\n        return self.filelength\n\n    def __getitem__(self, idx):\n        img_path = self.file_list[idx]\n        img = Image.open(img_path)\n        img_transformed = self.transform(img)\n        \n        \n        train_id = re.split(\"[/.]\",img_path)[-2]\n        l = label_list[id.index(train_id)]\n        label = 1 if l == \"CE\" else 0 #ここを書換えてください\n        \n#         print(idx, img_path, label)\n        \n        return img_transformed, label","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.607233Z","iopub.execute_input":"2022-09-07T04:10:04.609535Z","iopub.status.idle":"2022-09-07T04:10:04.620937Z","shell.execute_reply.started":"2022-09-07T04:10:04.609493Z","shell.execute_reply":"2022-09-07T04:10:04.619772Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = MayoDataset(train_list, transform=train_transforms)\nvalid_data = MayoDataset(valid_list, transform=test_transforms)\ntest_data = MayoDataset(test_list, transform=test_transforms)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.627472Z","iopub.execute_input":"2022-09-07T04:10:04.630196Z","iopub.status.idle":"2022-09-07T04:10:04.637492Z","shell.execute_reply.started":"2022-09-07T04:10:04.630154Z","shell.execute_reply":"2022-09-07T04:10:04.636445Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_loader = DataLoader(dataset = train_data, batch_size=batch_size, shuffle=True )\nvalid_loader = DataLoader(dataset = valid_data, batch_size=batch_size, shuffle=True)\ntest_loader = DataLoader(dataset = test_data, batch_size=batch_size, shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.642763Z","iopub.execute_input":"2022-09-07T04:10:04.645441Z","iopub.status.idle":"2022-09-07T04:10:04.654942Z","shell.execute_reply.started":"2022-09-07T04:10:04.645403Z","shell.execute_reply":"2022-09-07T04:10:04.653764Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(len(train_data), len(train_loader))\nprint(len(valid_data), len(valid_loader))","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.660322Z","iopub.execute_input":"2022-09-07T04:10:04.661145Z","iopub.status.idle":"2022-09-07T04:10:04.671595Z","shell.execute_reply.started":"2022-09-07T04:10:04.661089Z","shell.execute_reply":"2022-09-07T04:10:04.670464Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# efficient_transformer = Linformer(\n#     dim=128,\n#     seq_len=49+1,  # 7x7 patches + 1 cls-token\n#     depth=12,\n#     heads=8,\n#     k=64\n# )\n\nfrom pprint import pprint\nmodel_names = timm.list_models(pretrained=True)\n# pprint(model_names)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.673728Z","iopub.execute_input":"2022-09-07T04:10:04.675693Z","iopub.status.idle":"2022-09-07T04:10:04.68951Z","shell.execute_reply.started":"2022-09-07T04:10:04.675653Z","shell.execute_reply":"2022-09-07T04:10:04.688188Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model = ViT(\n#     dim=128,\n#     image_size=224,\n#     patch_size=32,\n#     num_classes=2,\n#     transformer=efficient_transformer,\n#     channels=3,\n# ).to(device)\n# model = timm.create_model('vit_small_patch16_224', pretrained=True, num_classes=2)\nmodel = timm.create_model('vit_base_patch16_224', pretrained=True, num_classes=2)\nmodel.to(\"cuda:0\")","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:04.691531Z","iopub.execute_input":"2022-09-07T04:10:04.692415Z","iopub.status.idle":"2022-09-07T04:10:14.528411Z","shell.execute_reply.started":"2022-09-07T04:10:04.692379Z","shell.execute_reply":"2022-09-07T04:10:14.527019Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# loss function\ncriterion = nn.CrossEntropyLoss()\n# optimizer\noptimizer = optim.Adam(model.parameters(), lr=lr)\n# scheduler\nscheduler = StepLR(optimizer, step_size=1, gamma=gamma)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:14.533661Z","iopub.execute_input":"2022-09-07T04:10:14.536164Z","iopub.status.idle":"2022-09-07T04:10:14.551954Z","shell.execute_reply.started":"2022-09-07T04:10:14.536116Z","shell.execute_reply":"2022-09-07T04:10:14.55028Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"##ここを追記↓##\ntrain_acc_list = []\nval_acc_list = []\ntrain_loss_list = []\nval_loss_list = []\n##############\n\n\n# epochs = 1\n\nfor epoch in range(epochs):\n    epoch_loss = 0\n    epoch_accuracy = 0\n\n    for data, label in tqdm(train_loader):\n        data = data.to(device)\n        label = label.to(device)\n        \n#         print(data.size())\n\n        output = model(data)\n        loss = criterion(output, label)\n\n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n\n        acc = (output.argmax(dim=1) == label).float().mean()\n        epoch_accuracy += acc / len(train_loader)\n        epoch_loss += loss / len(train_loader)\n\n    with torch.no_grad():\n        epoch_val_accuracy = 0\n        epoch_val_loss = 0\n        for data, label in valid_loader:\n            data = data.to(device)\n            label = label.to(device)\n\n            val_output = model(data)\n            val_loss = criterion(val_output, label)\n\n            acc = (val_output.argmax(dim=1) == label).float().mean()\n            epoch_val_accuracy += acc / len(valid_loader)\n            epoch_val_loss += val_loss / len(valid_loader)\n\n    print(\n        f\"Epoch : {epoch+1} - loss : {epoch_loss:.4f} - acc: {epoch_accuracy:.4f} - val_loss : {epoch_val_loss:.4f} - val_acc: {epoch_val_accuracy:.4f}\\n\"\n    )\n\n##ここを追記↓##\n    train_acc_list.append(epoch_accuracy)\n    val_acc_list.append(epoch_val_accuracy)\n    train_loss_list.append(epoch_loss)\n    val_loss_list.append(epoch_val_loss)\n##############","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:10:14.556779Z","iopub.execute_input":"2022-09-07T04:10:14.557309Z","iopub.status.idle":"2022-09-07T04:16:18.275247Z","shell.execute_reply.started":"2022-09-07T04:10:14.55728Z","shell.execute_reply":"2022-09-07T04:16:18.274146Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"os.makedirs(\"./output\",exist_ok=True)\noutput_dir = \"./output\"\ntorch.save(model.state_dict(), os.path.join(output_dir, \"model_epoch.pth\"))","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:20:15.706408Z","iopub.execute_input":"2022-09-07T04:20:15.706763Z","iopub.status.idle":"2022-09-07T04:20:16.293768Z","shell.execute_reply.started":"2022-09-07T04:20:15.706734Z","shell.execute_reply":"2022-09-07T04:20:16.292757Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#出力したテンソルのデバイスをCPUへ切り替える\ndevice2 = torch.device('cpu')\n\ntrain_acc = []\ntrain_loss = []\nval_acc = []\nval_loss = []\n\nfor i in range(epochs):\n    train_acc2 = train_acc_list[i].to(device2)\n    train_acc3 = train_acc2.clone().numpy()\n    train_acc.append(train_acc3)\n    \n    train_loss2 = train_loss_list[i].to(device2)\n    train_loss3 = train_loss2.clone().detach().numpy()\n    train_loss.append(train_loss3)\n    \n    val_acc2 = val_acc_list[i].to(device2)\n    val_acc3 = val_acc2.clone().numpy()\n    val_acc.append(val_acc3)\n    \n    val_loss2 = val_loss_list[i].to(device2)\n    val_loss3 = val_loss2.clone().numpy()\n    val_loss.append(val_loss3)\n\n#取得したデータをグラフ化する\nsns.set()\nnum_epochs = epochs\n\nfig = plt.subplots(figsize=(12, 4), dpi=80)\n\nax1 = plt.subplot(1,2,1)\nax1.plot(range(num_epochs), train_acc, c='b', label='train acc')\nax1.plot(range(num_epochs), val_acc, c='r', label='val acc')\nax1.set_xlabel('epoch', fontsize='12')\nax1.set_ylabel('accuracy', fontsize='12')\nax1.set_title('training and val acc', fontsize='14')\nax1.legend(fontsize='12')\n\nax2 = plt.subplot(1,2,2)\nax2.plot(range(num_epochs), train_loss, c='b', label='train loss')\nax2.plot(range(num_epochs), val_loss, c='r', label='val loss')\nax2.set_xlabel('epoch', fontsize='12')\nax2.set_ylabel('loss', fontsize='12')\nax2.set_title('training and val loss', fontsize='14')\nax2.legend(fontsize='12')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:16:18.277275Z","iopub.execute_input":"2022-09-07T04:16:18.277966Z","iopub.status.idle":"2022-09-07T04:16:18.747643Z","shell.execute_reply.started":"2022-09-07T04:16:18.277926Z","shell.execute_reply":"2022-09-07T04:16:18.746552Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.load_state_dict(\n    torch.load(\n        os.path.join(output_dir, \"model_epoch.pth\"), map_location=torch.device(\"cuda\")\n    )\n)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:27:41.325289Z","iopub.execute_input":"2022-09-07T04:27:41.325903Z","iopub.status.idle":"2022-09-07T04:27:41.604078Z","shell.execute_reply.started":"2022-09-07T04:27:41.325868Z","shell.execute_reply":"2022-09-07T04:27:41.603043Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from torch.autograd import Variable\n\nmodel.eval()\n\nloader = test_transforms\n# image_size = data_config[\"input_size\"][-1]\n# loader = transforms.Compose([transforms.Resize(image_size), transforms.ToTensor()])\n\ndef image_loader(image_name):\n    image = Image.open(image_name).convert(\"RGB\")\n    image = loader(image)\n    image = Variable(image, requires_grad=True)\n    image = image.unsqueeze(0)\n    return image.cuda()\n\nm = nn.Softmax(dim=1)\n","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:36:26.423417Z","iopub.execute_input":"2022-09-07T04:36:26.424262Z","iopub.status.idle":"2022-09-07T04:36:26.437535Z","shell.execute_reply.started":"2022-09-07T04:36:26.424213Z","shell.execute_reply":"2022-09-07T04:36:26.436369Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_image_path = \"../input/jpg-images-strip-ai/train/09644e_3.jpg\"\npredicted_test_image = image_loader(test_image_path)\ndisplay(Image.open(test_image_path))\nm(model(predicted_test_image))","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:42:41.492999Z","iopub.execute_input":"2022-09-07T04:42:41.49373Z","iopub.status.idle":"2022-09-07T04:42:41.581348Z","shell.execute_reply.started":"2022-09-07T04:42:41.493694Z","shell.execute_reply":"2022-09-07T04:42:41.580239Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# anss, ids = model.predict(test_loader)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:26:55.251839Z","iopub.execute_input":"2022-09-07T04:26:55.252271Z","iopub.status.idle":"2022-09-07T04:26:55.257267Z","shell.execute_reply.started":"2022-09-07T04:26:55.252235Z","shell.execute_reply":"2022-09-07T04:26:55.25601Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# anss, ids = predict(model, test_loader)","metadata":{"papermill":{"duration":null,"end_time":null,"exception":null,"start_time":null,"status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-09-07T04:16:19.34992Z","iopub.status.idle":"2022-09-07T04:16:19.350994Z","shell.execute_reply.started":"2022-09-07T04:16:19.350715Z","shell.execute_reply":"2022-09-07T04:16:19.350742Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# prob = pd.DataFrame({\"CE\" : anss[:,0], \"LAA\" : anss[:,1], \"id\" : ids}).groupby(\"id\").mean()","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:16:19.352257Z","iopub.status.idle":"2022-09-07T04:16:19.352887Z","shell.execute_reply.started":"2022-09-07T04:16:19.352662Z","shell.execute_reply":"2022-09-07T04:16:19.352684Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# submission = pd.read_csv(\"../input/mayo-clinic-strip-ai/sample_submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:16:19.354078Z","iopub.status.idle":"2022-09-07T04:16:19.354746Z","shell.execute_reply.started":"2022-09-07T04:16:19.354505Z","shell.execute_reply":"2022-09-07T04:16:19.354528Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# submission.CE = prob.CE.to_list()\n# submission.LAA = prob.LAA.to_list()","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:16:19.355849Z","iopub.status.idle":"2022-09-07T04:16:19.356515Z","shell.execute_reply.started":"2022-09-07T04:16:19.356282Z","shell.execute_reply":"2022-09-07T04:16:19.356303Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# submission.to_csv(\"submission.csv\", index = False)","metadata":{"execution":{"iopub.status.busy":"2022-09-07T04:16:19.357701Z","iopub.status.idle":"2022-09-07T04:16:19.358441Z","shell.execute_reply.started":"2022-09-07T04:16:19.358171Z","shell.execute_reply":"2022-09-07T04:16:19.358196Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}