{"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":"markdown","source":"### https://www.kaggle.com/code/finlay/pytorch-mlp-bagging-train-step\n\n### https://www.kaggle.com/code/finlay/pytorch-mlp-bagging-inference-step/","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport glob, gc","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-29T01:55:01.199146Z","iopub.execute_input":"2022-07-29T01:55:01.199726Z","iopub.status.idle":"2022-07-29T01:55:01.205814Z","shell.execute_reply.started":"2022-07-29T01:55:01.199691Z","shell.execute_reply":"2022-07-29T01:55:01.204694Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os\nimport copy\nimport torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torch.nn.functional as F","metadata":{"execution":{"iopub.status.busy":"2022-07-29T01:55:01.207905Z","iopub.execute_input":"2022-07-29T01:55:01.208511Z","iopub.status.idle":"2022-07-29T01:55:01.230980Z","shell.execute_reply.started":"2022-07-29T01:55:01.208476Z","shell.execute_reply":"2022-07-29T01:55:01.227526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class DenseModel(nn.Module):\n    def __init__(self, in_feats, repeat=1):\n        super(DenseModel, self).__init__()\n        self.l1 = nn.Linear(in_feats, 400, bias=True)\n        self.l2 = nn.Linear(1318, 100, bias=True)\n        self.l3 = nn.Linear(1418, 1, bias=True)\n        self.relu = nn.ReLU()\n        self.dropout = nn.Dropout(0.7)\n        self.bn1 = nn.BatchNorm1d(in_feats)\n        self.bn2 = nn.BatchNorm1d(200)\n\n    def forward(self, x):\n        x = self.bn1(x)\n\n        x1 = self.l1(x)\n        x1 = self.dropout(x1)\n        x1 = self.relu(x1)\n\n        x_c1 = torch.cat([x, x1], 1)\n        x2 = self.l2(x_c1)\n        x2 = self.dropout(x2)\n        x2 = self.relu(x2)\n\n        x_c2 = torch.cat([x, x1, x2], 1)\n        x3 = self.l3(x_c2)\n        return x3","metadata":{"execution":{"iopub.status.busy":"2022-07-29T01:56:43.945765Z","iopub.execute_input":"2022-07-29T01:56:43.946294Z","iopub.status.idle":"2022-07-29T01:56:43.958138Z","shell.execute_reply.started":"2022-07-29T01:56:43.946255Z","shell.execute_reply":"2022-07-29T01:56:43.956705Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test = pd.read_parquet(\"../input/amex-fe/test_fe.parquet\")","metadata":{"execution":{"iopub.status.busy":"2022-07-29T01:55:02.084108Z","iopub.execute_input":"2022-07-29T01:55:02.084534Z","iopub.status.idle":"2022-07-29T01:55:26.227571Z","shell.execute_reply.started":"2022-07-29T01:55:02.084500Z","shell.execute_reply":"2022-07-29T01:55:26.226586Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"paths = glob.glob('../input/pytorch-mlp-bagging-train-step/*.pt')\ntta_test_pred = []\nfor path in paths[:]:\n    print(path)\n    model = DenseModel(test.shape[1]-1)\n    model.load_state_dict(torch.load(path))\n    model.eval()\n    \n    CTS = len(test)//40960\n    if len(test)%40960!=0: CTS += 1\n        \n    test_pred = []\n    for j in range( CTS ):\n        a = j*40960\n        b = (j+1)*40960\n        b = min(b, len(test))\n        batch_data = test.iloc[a:b, 1:].fillna(0).values.astype(np.float32)\n        batch_data = torch.from_numpy(batch_data)\n\n        pred = model(batch_data)\n        pred = torch.sigmoid(pred).data.cpu().numpy()\n        test_pred.append(pred)\n        \n    del model\n    tta_test_pred.append(np.vstack(test_pred).reshape(-1))","metadata":{"execution":{"iopub.status.busy":"2022-07-29T01:56:45.098605Z","iopub.execute_input":"2022-07-29T01:56:45.099396Z","iopub.status.idle":"2022-07-29T02:08:57.771567Z","shell.execute_reply.started":"2022-07-29T01:56:45.099359Z","shell.execute_reply":"2022-07-29T02:08:57.769254Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub = pd.DataFrame({'customer_ID': test['customer_ID'].values,\n                    'prediction': np.mean(tta_test_pred, axis=0)})\nsub.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-29T02:08:57.775791Z","iopub.execute_input":"2022-07-29T02:08:57.776718Z","iopub.status.idle":"2022-07-29T02:09:02.139397Z","shell.execute_reply.started":"2022-07-29T02:08:57.776667Z","shell.execute_reply":"2022-07-29T02:09:02.138113Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}