{"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":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom tqdm import tqdm\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n\nimport torch\nfrom torch.autograd import Variable\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nimport torch.optim as optim\nfrom torch.utils.data import DataLoader, TensorDataset,Dataset\n\nimport gc\n\nimport random\n\nimport transformers\nimport warnings\nwarnings.simplefilter('ignore')\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nfrom collections import Counter\nfrom sklearn.utils import shuffle\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.model_selection import train_test_split\n\n\n#scaler = torch.cuda.amp.GradScaler() # GPUでの高速化。\n\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # cpuがgpuかを自動判断\ndevice","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:10.893196Z","iopub.execute_input":"2022-06-28T09:27:10.894953Z","iopub.status.idle":"2022-06-28T09:27:10.915571Z","shell.execute_reply.started":"2022-06-28T09:27:10.8949Z","shell.execute_reply":"2022-06-28T09:27:10.91408Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train = pd.read_csv('../input/titanic/train.csv')\ndf_test  = pd.read_csv('../input/titanic/test.csv')\ndf_sub   = pd.read_csv('../input/titanic/gender_submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:10.918299Z","iopub.execute_input":"2022-06-28T09:27:10.919117Z","iopub.status.idle":"2022-06-28T09:27:10.944646Z","shell.execute_reply.started":"2022-06-28T09:27:10.919067Z","shell.execute_reply":"2022-06-28T09:27:10.942853Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.drop(['Name','Ticket','Cabin'],axis=1,inplace=True)\ndf_test.drop( ['Name','Ticket','Cabin'],axis=1,inplace=True)\n\nsex      = pd.get_dummies(df_train['Sex'],drop_first=True)\nembark   = pd.get_dummies(df_train['Embarked'],drop_first=True)\ndf_train = pd.concat([df_train,sex,embark],axis=1)\n\ndf_train.drop(['Sex','Embarked'],axis=1,inplace=True)\n\nsex     = pd.get_dummies(df_test['Sex'],drop_first=True)\nembark  = pd.get_dummies(df_test['Embarked'],drop_first=True)\ndf_test = pd.concat([df_test,sex,embark],axis=1)\n\ndf_test.drop(['Sex','Embarked'],axis=1,inplace=True)\n\ndf_train.fillna(df_train.mean(),inplace=True)\ndf_test.fillna(df_test.mean(),inplace=True)\n\nScaler1 = StandardScaler()\nScaler2 = StandardScaler()\n\ntrain_columns = df_train.columns\ntest_columns  = df_test.columns\n\ndf_train = pd.DataFrame(Scaler1.fit_transform(df_train))\ndf_test  = pd.DataFrame(Scaler2.fit_transform(df_test))\n\ndf_train.columns = train_columns\ndf_test.columns  = test_columns\n\nfeatures = df_train.iloc[:,2:].columns.tolist()\ntarget   = df_train.loc[:, 'Survived'].name\n\nX_train = df_train.iloc[:,2:].values\ny_train = df_train.loc[:, 'Survived'].values","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:10.94637Z","iopub.execute_input":"2022-06-28T09:27:10.9476Z","iopub.status.idle":"2022-06-28T09:27:10.993487Z","shell.execute_reply.started":"2022-06-28T09:27:10.947546Z","shell.execute_reply":"2022-06-28T09:27:10.992595Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.fc1 = nn.Linear(8, 512)\n        self.fc2 = nn.Linear(512, 512)\n        self.fc3 = nn.Linear(512, 2)\n        self.dropout = nn.Dropout(0.2)\n        \n    def forward(self, x):\n        x = F.relu(self.fc1(x))\n        x = self.dropout(x)\n        x = F.relu(self.fc2(x))\n        x = self.dropout(x)\n        x = self.fc3(x)\n        return x\nmodel = Net()\nprint(model)","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:10.994755Z","iopub.execute_input":"2022-06-28T09:27:10.995301Z","iopub.status.idle":"2022-06-28T09:27:11.007542Z","shell.execute_reply.started":"2022-06-28T09:27:10.995269Z","shell.execute_reply":"2022-06-28T09:27:11.006633Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"criterion = nn.CrossEntropyLoss()","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:11.010325Z","iopub.execute_input":"2022-06-28T09:27:11.010759Z","iopub.status.idle":"2022-06-28T09:27:11.019067Z","shell.execute_reply.started":"2022-06-28T09:27:11.010725Z","shell.execute_reply":"2022-06-28T09:27:11.018141Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"optimizer = torch.optim.SGD(model.parameters(), lr=0.01)","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:11.02085Z","iopub.execute_input":"2022-06-28T09:27:11.021718Z","iopub.status.idle":"2022-06-28T09:27:11.031334Z","shell.execute_reply.started":"2022-06-28T09:27:11.021666Z","shell.execute_reply":"2022-06-28T09:27:11.030474Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"batch_size = 64\nn_epochs = 1000\nbatch_no = len(X_train) // batch_size\n\ntrain_loss = 0\ntrain_loss_min = np.Inf\nfor epoch in range(n_epochs):\n    for i in range(batch_no):\n        start = i * batch_size\n        end   = start + batch_size\n        x_var = Variable(torch.FloatTensor(X_train[start:end]))\n        y_var = Variable(torch.LongTensor(y_train[start:end])) \n        \n        optimizer.zero_grad()\n        output = model(x_var)\n        loss   = criterion(output,y_var)\n        loss.backward()\n        optimizer.step()\n        \n        values, labels = torch.max(output, 1)\n        num_right   = np.sum(labels.data.numpy() == y_train[start:end])\n        train_loss += loss.item()*batch_size\n    \n    train_loss = train_loss / len(X_train)\n    if train_loss <= train_loss_min:\n        print(\"Validation loss decreased ({:6f} ===> {:6f}). Saving the model...\".format(train_loss_min,train_loss))\n        torch.save(model.state_dict(), \"model.pt\")\n        train_loss_min = train_loss\n    \n    if epoch % 200 == 0:\n        print('')\n        print(\"Epoch: {} \\tTrain Loss: {} \\tTrain Accuracy: {}\".format(epoch+1, train_loss,num_right / len(y_train[start:end]) ))\nprint('Training Ended! ')","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:11.033205Z","iopub.execute_input":"2022-06-28T09:27:11.033683Z","iopub.status.idle":"2022-06-28T09:27:46.9862Z","shell.execute_reply.started":"2022-06-28T09:27:11.033638Z","shell.execute_reply":"2022-06-28T09:27:46.984987Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test     = df_test.iloc[:,1:].values\nX_test_var = Variable(torch.FloatTensor(X_test), requires_grad=False) \nwith torch.no_grad():\n    test_result = model(X_test_var)\nvalues, labels = torch.max(test_result, 1)\nsurvived = labels.data.numpy()","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:46.989099Z","iopub.execute_input":"2022-06-28T09:27:46.989487Z","iopub.status.idle":"2022-06-28T09:27:47.00331Z","shell.execute_reply.started":"2022-06-28T09:27:46.989452Z","shell.execute_reply":"2022-06-28T09:27:47.001744Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.DataFrame({'PassengerId': df_sub['PassengerId'], 'Survived': survived})\nsubmission","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:47.00522Z","iopub.execute_input":"2022-06-28T09:27:47.005631Z","iopub.status.idle":"2022-06-28T09:27:47.025357Z","shell.execute_reply.started":"2022-06-28T09:27:47.005592Z","shell.execute_reply":"2022-06-28T09:27:47.024426Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-06-28T09:27:47.026487Z","iopub.execute_input":"2022-06-28T09:27:47.02732Z","iopub.status.idle":"2022-06-28T09:27:47.039142Z","shell.execute_reply.started":"2022-06-28T09:27:47.027282Z","shell.execute_reply":"2022-06-28T09:27:47.038154Z"},"trusted":true},"execution_count":null,"outputs":[]}]}