{"cells":[{"metadata":{"papermill":{"duration":0.0384,"end_time":"2020-10-02T04:43:03.743344","exception":false,"start_time":"2020-10-02T04:43:03.704944","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Basic imports"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:03.821835Z","iopub.status.busy":"2020-10-02T04:43:03.8211Z","iopub.status.idle":"2020-10-02T04:43:09.438325Z","shell.execute_reply":"2020-10-02T04:43:09.438984Z"},"papermill":{"duration":5.658886,"end_time":"2020-10-02T04:43:09.439182","exception":false,"start_time":"2020-10-02T04:43:03.780296","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os\nimport tensorflow as tf\nimport random","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.048848,"end_time":"2020-10-02T04:43:09.539276","exception":false,"start_time":"2020-10-02T04:43:09.490428","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Seed all"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:09.67318Z","iopub.status.busy":"2020-10-02T04:43:09.672356Z","iopub.status.idle":"2020-10-02T04:43:09.673976Z","shell.execute_reply":"2020-10-02T04:43:09.675332Z"},"papermill":{"duration":0.087479,"end_time":"2020-10-02T04:43:09.675474","exception":false,"start_time":"2020-10-02T04:43:09.587995","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"def seed_everything(seed=2020):\n    random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    np.random.seed(seed)\n    tf.random.set_seed(seed)\n    \nseed_everything(13)","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.042015,"end_time":"2020-10-02T04:43:09.777078","exception":false,"start_time":"2020-10-02T04:43:09.735063","status":"completed"},"tags":[]},"cell_type":"markdown","source":"Set variables"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:09.855416Z","iopub.status.busy":"2020-10-02T04:43:09.854491Z","iopub.status.idle":"2020-10-02T04:43:09.856326Z","shell.execute_reply":"2020-10-02T04:43:09.856963Z"},"papermill":{"duration":0.042913,"end_time":"2020-10-02T04:43:09.857088","exception":false,"start_time":"2020-10-02T04:43:09.814175","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"base_dir = '/kaggle/input/osic-pulmonary-fibrosis-progression'\n\nsubmission_file_name = 'submission.csv'","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.03715,"end_time":"2020-10-02T04:43:09.931727","exception":false,"start_time":"2020-10-02T04:43:09.894577","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Train raw"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:10.014339Z","iopub.status.busy":"2020-10-02T04:43:10.013691Z","iopub.status.idle":"2020-10-02T04:43:10.047559Z","shell.execute_reply":"2020-10-02T04:43:10.047001Z"},"papermill":{"duration":0.078869,"end_time":"2020-10-02T04:43:10.047676","exception":false,"start_time":"2020-10-02T04:43:09.968807","status":"completed"},"scrolled":true,"tags":[],"trusted":true},"cell_type":"code","source":"train_raw = pd.read_csv(os.path.join(base_dir, 'train.csv'))\n\ntrain_raw.head()","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.04085,"end_time":"2020-10-02T04:43:10.130669","exception":false,"start_time":"2020-10-02T04:43:10.089819","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Inference raw"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:10.220817Z","iopub.status.busy":"2020-10-02T04:43:10.219829Z","iopub.status.idle":"2020-10-02T04:43:10.225755Z","shell.execute_reply":"2020-10-02T04:43:10.225222Z"},"papermill":{"duration":0.053616,"end_time":"2020-10-02T04:43:10.225855","exception":false,"start_time":"2020-10-02T04:43:10.172239","status":"completed"},"scrolled":false,"tags":[],"trusted":true},"cell_type":"code","source":"inference_raw = pd.read_csv(os.path.join(base_dir, 'test.csv'))","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.037642,"end_time":"2020-10-02T04:43:10.301143","exception":false,"start_time":"2020-10-02T04:43:10.263501","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Submission raw"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:10.382323Z","iopub.status.busy":"2020-10-02T04:43:10.381426Z","iopub.status.idle":"2020-10-02T04:43:10.392637Z","shell.execute_reply":"2020-10-02T04:43:10.393186Z"},"papermill":{"duration":0.054493,"end_time":"2020-10-02T04:43:10.393302","exception":false,"start_time":"2020-10-02T04:43:10.338809","status":"completed"},"scrolled":false,"tags":[],"trusted":true},"cell_type":"code","source":"submission_raw = pd.read_csv(os.path.join(base_dir, 'sample_submission.csv'))\n\nsubmission_raw.head()","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:10.49005Z","iopub.status.busy":"2020-10-02T04:43:10.489306Z","iopub.status.idle":"2020-10-02T04:43:10.492962Z","shell.execute_reply":"2020-10-02T04:43:10.493431Z"},"papermill":{"duration":0.061328,"end_time":"2020-10-02T04:43:10.493563","exception":false,"start_time":"2020-10-02T04:43:10.432235","status":"completed"},"scrolled":true,"tags":[],"trusted":true},"cell_type":"code","source":"submission = submission_raw.copy()\n\nsubmission['Patient'] = submission['Patient_Week'].apply(lambda x:x.split('_')[0])\nsubmission['Weeks'] = submission['Patient_Week'].apply(lambda x: int(x.split('_')[-1]))\n\nsubmission.head()","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.040153,"end_time":"2020-10-02T04:43:10.574233","exception":false,"start_time":"2020-10-02T04:43:10.53408","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Join submission and inference dataframes"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:10.665266Z","iopub.status.busy":"2020-10-02T04:43:10.659381Z","iopub.status.idle":"2020-10-02T04:43:10.689598Z","shell.execute_reply":"2020-10-02T04:43:10.690137Z"},"papermill":{"duration":0.076896,"end_time":"2020-10-02T04:43:10.690304","exception":false,"start_time":"2020-10-02T04:43:10.613408","status":"completed"},"scrolled":true,"tags":[],"trusted":true},"cell_type":"code","source":"submission_test = pd.merge(inference_raw, submission, on='Patient', how='inner')\n\nsubmission_test.head()","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.044559,"end_time":"2020-10-02T04:43:10.778009","exception":false,"start_time":"2020-10-02T04:43:10.73345","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Introduce baseline features for test/submission"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:10.871996Z","iopub.status.busy":"2020-10-02T04:43:10.871216Z","iopub.status.idle":"2020-10-02T04:43:10.905288Z","shell.execute_reply":"2020-10-02T04:43:10.904699Z"},"papermill":{"duration":0.083816,"end_time":"2020-10-02T04:43:10.905391","exception":false,"start_time":"2020-10-02T04:43:10.821575","status":"completed"},"scrolled":false,"tags":[],"trusted":true},"cell_type":"code","source":"submission_test['bl_Weeks'] = submission_test['Weeks_y'] - submission_test['Weeks_x']\nsubmission_test = submission_test[['Patient', 'Patient_Week', 'Weeks_y', 'Percent', 'Age', 'Sex', 'SmokingStatus', 'bl_Weeks', 'FVC_x']]\n\nsubmission_test.rename(columns = {'FVC_x' : 'bl_FVC'}, inplace = True)\nsubmission_test.rename(columns = {'Weeks_y' : 'Weeks'}, inplace = True)\n\nsubmission_test.head()","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.040448,"end_time":"2020-10-02T04:43:10.987252","exception":false,"start_time":"2020-10-02T04:43:10.946804","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Introduce baseline features for train"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:11.078674Z","iopub.status.busy":"2020-10-02T04:43:11.077969Z","iopub.status.idle":"2020-10-02T04:43:13.431818Z","shell.execute_reply":"2020-10-02T04:43:13.431275Z"},"papermill":{"duration":2.404645,"end_time":"2020-10-02T04:43:13.431931","exception":false,"start_time":"2020-10-02T04:43:11.027286","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"train = train_raw.copy()\ntrain['min_Weeks'] = train.groupby('Patient')['Weeks'].transform('min')\ntrain['bl_Weeks'] = train['Weeks'] - train['min_Weeks']\n\ntrain['bl_FVC'] = 0\n\nfor i, row in train.iterrows():\n    a = train.loc[train['Patient'] == row['Patient']]\n    a = a.loc[a['bl_Weeks'] == 0]\n    train.at[i,'bl_FVC'] = a['FVC'].values[0]\n    \ntrain = train[['Patient', 'Percent', 'Age', 'Sex', 'SmokingStatus', 'bl_Weeks', 'bl_FVC', 'FVC']]\n\ntrain.head()","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.041863,"end_time":"2020-10-02T04:43:13.515867","exception":false,"start_time":"2020-10-02T04:43:13.474004","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Data preprocessing"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:13.603172Z","iopub.status.busy":"2020-10-02T04:43:13.602356Z","iopub.status.idle":"2020-10-02T04:43:13.606106Z","shell.execute_reply":"2020-10-02T04:43:13.605643Z"},"papermill":{"duration":0.049904,"end_time":"2020-10-02T04:43:13.606212","exception":false,"start_time":"2020-10-02T04:43:13.556308","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"X_train = train.iloc[:,1:7].values\ny_train = train.iloc[:,-1].values","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.041463,"end_time":"2020-10-02T04:43:13.688677","exception":false,"start_time":"2020-10-02T04:43:13.647214","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Male / Female encoder"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:13.77704Z","iopub.status.busy":"2020-10-02T04:43:13.776389Z","iopub.status.idle":"2020-10-02T04:43:14.531673Z","shell.execute_reply":"2020-10-02T04:43:14.530821Z"},"papermill":{"duration":0.802089,"end_time":"2020-10-02T04:43:14.531795","exception":false,"start_time":"2020-10-02T04:43:13.729706","status":"completed"},"scrolled":true,"tags":[],"trusted":true},"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder, OneHotEncoder\nfrom sklearn.compose import ColumnTransformer\n\nlblEncoder = LabelEncoder()\nX_train[:, 2] = lblEncoder.fit_transform(X_train[:, 2])","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.043145,"end_time":"2020-10-02T04:43:14.61627","exception":false,"start_time":"2020-10-02T04:43:14.573125","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Smoker status encoder"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:14.707744Z","iopub.status.busy":"2020-10-02T04:43:14.706897Z","iopub.status.idle":"2020-10-02T04:43:14.71645Z","shell.execute_reply":"2020-10-02T04:43:14.715968Z"},"papermill":{"duration":0.058815,"end_time":"2020-10-02T04:43:14.71657","exception":false,"start_time":"2020-10-02T04:43:14.657755","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"columnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), [3])], remainder='passthrough')\nX_train = np.array(columnTransformer.fit_transform(X_train), dtype = np.str)\nX_train = X_train[:, 1:]","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.058855,"end_time":"2020-10-02T04:43:14.816749","exception":false,"start_time":"2020-10-02T04:43:14.757894","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Normalize training set"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:15.002455Z","iopub.status.busy":"2020-10-02T04:43:15.001487Z","iopub.status.idle":"2020-10-02T04:43:15.018278Z","shell.execute_reply":"2020-10-02T04:43:15.01946Z"},"papermill":{"duration":0.112887,"end_time":"2020-10-02T04:43:15.019675","exception":false,"start_time":"2020-10-02T04:43:14.906788","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"from sklearn.preprocessing import StandardScaler\nsc = StandardScaler()\nX_train = sc.fit_transform(X_train)","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.06125,"end_time":"2020-10-02T04:43:15.143662","exception":false,"start_time":"2020-10-02T04:43:15.082412","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Normalize training set (labels)"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:15.277354Z","iopub.status.busy":"2020-10-02T04:43:15.276332Z","iopub.status.idle":"2020-10-02T04:43:15.280342Z","shell.execute_reply":"2020-10-02T04:43:15.281061Z"},"papermill":{"duration":0.075408,"end_time":"2020-10-02T04:43:15.281245","exception":false,"start_time":"2020-10-02T04:43:15.205837","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"sc_out = StandardScaler()\ny_train = sc_out.fit_transform(y_train.reshape(-1, 1))","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:15.415128Z","iopub.status.busy":"2020-10-02T04:43:15.414141Z","iopub.status.idle":"2020-10-02T04:43:15.421138Z","shell.execute_reply":"2020-10-02T04:43:15.421873Z"},"papermill":{"duration":0.078989,"end_time":"2020-10-02T04:43:15.422074","exception":false,"start_time":"2020-10-02T04:43:15.343085","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"X_train","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:15.544043Z","iopub.status.busy":"2020-10-02T04:43:15.543183Z","iopub.status.idle":"2020-10-02T04:43:15.546874Z","shell.execute_reply":"2020-10-02T04:43:15.547422Z"},"papermill":{"duration":0.056289,"end_time":"2020-10-02T04:43:15.547571","exception":false,"start_time":"2020-10-02T04:43:15.491282","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"y_train","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.042857,"end_time":"2020-10-02T04:43:15.638298","exception":false,"start_time":"2020-10-02T04:43:15.595441","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Split train and validation data"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:15.728827Z","iopub.status.busy":"2020-10-02T04:43:15.72819Z","iopub.status.idle":"2020-10-02T04:43:15.797943Z","shell.execute_reply":"2020-10-02T04:43:15.797226Z"},"papermill":{"duration":0.116008,"end_time":"2020-10-02T04:43:15.798046","exception":false,"start_time":"2020-10-02T04:43:15.682038","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(X_train, y_train, test_size = 0.2)","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.043109,"end_time":"2020-10-02T04:43:15.883594","exception":false,"start_time":"2020-10-02T04:43:15.840485","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Build keras model"},{"metadata":{"papermill":{"duration":0.042136,"end_time":"2020-10-02T04:43:15.969704","exception":false,"start_time":"2020-10-02T04:43:15.927568","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Use GPU"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:16.944641Z","iopub.status.busy":"2020-10-02T04:43:16.94178Z","iopub.status.idle":"2020-10-02T04:43:16.94793Z","shell.execute_reply":"2020-10-02T04:43:16.950441Z"},"papermill":{"duration":0.937995,"end_time":"2020-10-02T04:43:16.950601","exception":false,"start_time":"2020-10-02T04:43:16.012606","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"physical_devices = tf.config.experimental.list_physical_devices('GPU')\nprint(\"Num GPUs Available: \", len(physical_devices))\ntf.config.experimental.set_memory_growth(physical_devices[0], True)","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.043329,"end_time":"2020-10-02T04:43:17.040121","exception":false,"start_time":"2020-10-02T04:43:16.996792","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Functional API model"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:17.137911Z","iopub.status.busy":"2020-10-02T04:43:17.137219Z","iopub.status.idle":"2020-10-02T04:43:19.018368Z","shell.execute_reply":"2020-10-02T04:43:19.017793Z"},"papermill":{"duration":1.934342,"end_time":"2020-10-02T04:43:19.018483","exception":false,"start_time":"2020-10-02T04:43:17.084141","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"import tensorflow\nimport tensorflow.keras as keras\nimport tensorflow.keras.layers as layers\n\ndata_input = keras.Input(shape=(7,), name='data_input')\nx = layers.Dense(512, activation=\"relu\")(data_input)\nx = layers.Dropout(.4)(x)\nx = layers.Dense(256, activation=\"relu\")(x)\nx = layers.Dropout(.4)(x)\nx = layers.Dense(128, activation=\"relu\")(x)\nx = layers.Dropout(.4)(x)\ndata_output = layers.Dense(1, name='data_output')(x)\n\ndata_model = keras.Model(inputs=data_input, outputs=data_output, name=\"data_model\")\n\ndata_model.summary()","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:19.118326Z","iopub.status.busy":"2020-10-02T04:43:19.117432Z","iopub.status.idle":"2020-10-02T04:43:19.126662Z","shell.execute_reply":"2020-10-02T04:43:19.126074Z"},"papermill":{"duration":0.064275,"end_time":"2020-10-02T04:43:19.126822","exception":false,"start_time":"2020-10-02T04:43:19.062547","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"data_model.compile(\n    optimizer=keras.optimizers.Adam(),\n    loss='mean_squared_error')","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.044673,"end_time":"2020-10-02T04:43:19.22479","exception":false,"start_time":"2020-10-02T04:43:19.180117","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Train the model"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:19.326478Z","iopub.status.busy":"2020-10-02T04:43:19.325813Z","iopub.status.idle":"2020-10-02T04:43:55.43585Z","shell.execute_reply":"2020-10-02T04:43:55.436924Z"},"papermill":{"duration":36.164616,"end_time":"2020-10-02T04:43:55.437066","exception":false,"start_time":"2020-10-02T04:43:19.27245","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"history = data_model.fit(X_train, y_train, batch_size=32, epochs=350, validation_split=0.2, verbose=0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('loss:', history.history['loss'][len(history.history['loss'])-1])\nprint('val_loss:', history.history['val_loss'][len(history.history['val_loss'])-1])","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:56.334232Z","iopub.status.busy":"2020-10-02T04:43:56.333495Z","iopub.status.idle":"2020-10-02T04:43:56.583925Z","shell.execute_reply":"2020-10-02T04:43:56.583086Z"},"papermill":{"duration":0.716796,"end_time":"2020-10-02T04:43:56.584068","exception":false,"start_time":"2020-10-02T04:43:55.867272","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nplt.plot(history.history['loss'], label='loss')\nplt.plot(history.history['val_loss'], label='val_loss')\nplt.ylim([0, .4])\nplt.xlabel('Epoch')\nplt.ylabel('Error [FVC]')\nplt.legend()\nplt.grid(True)","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.466026,"end_time":"2020-10-02T04:43:57.520326","exception":false,"start_time":"2020-10-02T04:43:57.0543","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Evaluate the model"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:43:58.385978Z","iopub.status.busy":"2020-10-02T04:43:58.382718Z","iopub.status.idle":"2020-10-02T04:43:58.446868Z","shell.execute_reply":"2020-10-02T04:43:58.445711Z"},"papermill":{"duration":0.495377,"end_time":"2020-10-02T04:43:58.446979","exception":false,"start_time":"2020-10-02T04:43:57.951602","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"test_results = {}\n\ntest_results['FVC'] = data_model.evaluate(\n    X_test,\n    y_test,\n    batch_size=32)\n\ntest_results","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.435588,"end_time":"2020-10-02T04:43:59.311976","exception":false,"start_time":"2020-10-02T04:43:58.876388","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Evaluate confidence of prediction"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:00.180216Z","iopub.status.busy":"2020-10-02T04:44:00.17927Z","iopub.status.idle":"2020-10-02T04:44:00.302679Z","shell.execute_reply":"2020-10-02T04:44:00.30144Z"},"papermill":{"duration":0.554824,"end_time":"2020-10-02T04:44:00.302813","exception":false,"start_time":"2020-10-02T04:43:59.747989","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"y_pred = data_model.predict(X_test)","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:01.1768Z","iopub.status.busy":"2020-10-02T04:44:01.175613Z","iopub.status.idle":"2020-10-02T04:44:01.186229Z","shell.execute_reply":"2020-10-02T04:44:01.185628Z"},"papermill":{"duration":0.450812,"end_time":"2020-10-02T04:44:01.186346","exception":false,"start_time":"2020-10-02T04:44:00.735534","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"y_comp = pd.DataFrame()\n\ny_comp['pred'] = np.concatenate(sc_out.inverse_transform(y_pred), axis=0)\ny_comp['real'] = np.concatenate(sc_out.inverse_transform(y_test), axis=0)\n\ny_comp['dif'] = y_comp['real'] - y_comp['pred']\ny_comp['pow'] = np.square(y_comp['dif'])\ny_comp['sqrt'] = np.sqrt(y_comp['pow'])","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.434927,"end_time":"2020-10-02T04:44:02.060998","exception":false,"start_time":"2020-10-02T04:44:01.626071","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Model confidence"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:02.930186Z","iopub.status.busy":"2020-10-02T04:44:02.928992Z","iopub.status.idle":"2020-10-02T04:44:02.932854Z","shell.execute_reply":"2020-10-02T04:44:02.93356Z"},"papermill":{"duration":0.444551,"end_time":"2020-10-02T04:44:02.933704","exception":false,"start_time":"2020-10-02T04:44:02.489153","status":"completed"},"scrolled":false,"tags":[],"trusted":true},"cell_type":"code","source":"confidence = (1 - (y_comp['sqrt'].mean() / y_comp['real'].mean())) * 100\nprint('Confidence: ', \"{:.2f}\".format(confidence), '%')\nmean_error = y_comp['sqrt'].mean()\nprint('Mean error:', mean_error)","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.469845,"end_time":"2020-10-02T04:44:03.839927","exception":false,"start_time":"2020-10-02T04:44:03.370082","status":"completed"},"tags":[]},"cell_type":"markdown","source":"# Submission"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:04.919139Z","iopub.status.busy":"2020-10-02T04:44:04.918177Z","iopub.status.idle":"2020-10-02T04:44:04.921188Z","shell.execute_reply":"2020-10-02T04:44:04.920691Z"},"papermill":{"duration":0.457587,"end_time":"2020-10-02T04:44:04.921318","exception":false,"start_time":"2020-10-02T04:44:04.463731","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"sub_pred = submission_test.iloc[:, 3:9].values","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.424557,"end_time":"2020-10-02T04:44:05.775684","exception":false,"start_time":"2020-10-02T04:44:05.351127","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Male / Female encoder"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:06.645159Z","iopub.status.busy":"2020-10-02T04:44:06.643328Z","iopub.status.idle":"2020-10-02T04:44:06.645947Z","shell.execute_reply":"2020-10-02T04:44:06.646455Z"},"papermill":{"duration":0.445105,"end_time":"2020-10-02T04:44:06.646641","exception":false,"start_time":"2020-10-02T04:44:06.201536","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"sub_pred[:, 2] = lblEncoder.transform(sub_pred[:, 2])","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.431879,"end_time":"2020-10-02T04:44:07.512434","exception":false,"start_time":"2020-10-02T04:44:07.080555","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Smoker status encoder"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:08.389314Z","iopub.status.busy":"2020-10-02T04:44:08.387208Z","iopub.status.idle":"2020-10-02T04:44:08.391773Z","shell.execute_reply":"2020-10-02T04:44:08.392251Z"},"papermill":{"duration":0.445198,"end_time":"2020-10-02T04:44:08.392379","exception":false,"start_time":"2020-10-02T04:44:07.947181","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"sub_pred = np.array(columnTransformer.transform(sub_pred), dtype = np.str)\nsub_pred = sub_pred[:, 1:]","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.429858,"end_time":"2020-10-02T04:44:09.253776","exception":false,"start_time":"2020-10-02T04:44:08.823918","status":"completed"},"tags":[]},"cell_type":"markdown","source":"### Normalize training set"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:10.121633Z","iopub.status.busy":"2020-10-02T04:44:10.120911Z","iopub.status.idle":"2020-10-02T04:44:10.124778Z","shell.execute_reply":"2020-10-02T04:44:10.124187Z"},"papermill":{"duration":0.437474,"end_time":"2020-10-02T04:44:10.124898","exception":false,"start_time":"2020-10-02T04:44:09.687424","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"sub_pred = sc.transform(sub_pred)","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:10.989459Z","iopub.status.busy":"2020-10-02T04:44:10.988549Z","iopub.status.idle":"2020-10-02T04:44:11.04569Z","shell.execute_reply":"2020-10-02T04:44:11.045092Z"},"papermill":{"duration":0.491724,"end_time":"2020-10-02T04:44:11.04583","exception":false,"start_time":"2020-10-02T04:44:10.554106","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"sub_pred_y = data_model.predict(sub_pred)","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:11.907217Z","iopub.status.busy":"2020-10-02T04:44:11.905746Z","iopub.status.idle":"2020-10-02T04:44:11.907903Z","shell.execute_reply":"2020-10-02T04:44:11.908392Z"},"papermill":{"duration":0.439827,"end_time":"2020-10-02T04:44:11.908536","exception":false,"start_time":"2020-10-02T04:44:11.468709","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"sub_pred_y_denorm = sc_out.inverse_transform(sub_pred_y)","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:12.773437Z","iopub.status.busy":"2020-10-02T04:44:12.772479Z","iopub.status.idle":"2020-10-02T04:44:12.779017Z","shell.execute_reply":"2020-10-02T04:44:12.779478Z"},"papermill":{"duration":0.439765,"end_time":"2020-10-02T04:44:12.779628","exception":false,"start_time":"2020-10-02T04:44:12.339863","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"submission_test['FVC'] = np.concatenate(sub_pred_y_denorm, axis=0)\nsubmission_test['Confidence'] = (1 - (mean_error/submission_test['FVC']))*100\nsubmission_test = submission_test[['Patient_Week', 'FVC', 'Confidence']]","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.430457,"end_time":"2020-10-02T04:44:13.634216","exception":false,"start_time":"2020-10-02T04:44:13.203759","status":"completed"},"tags":[]},"cell_type":"markdown","source":"## Submit and save the model"},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:14.537097Z","iopub.status.busy":"2020-10-02T04:44:14.536354Z","iopub.status.idle":"2020-10-02T04:44:14.825979Z","shell.execute_reply":"2020-10-02T04:44:14.82681Z"},"papermill":{"duration":0.728983,"end_time":"2020-10-02T04:44:14.827014","exception":false,"start_time":"2020-10-02T04:44:14.098031","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"submission_test.to_csv('submission.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{"execution":{"iopub.execute_input":"2020-10-02T04:44:16.335887Z","iopub.status.busy":"2020-10-02T04:44:16.334889Z","iopub.status.idle":"2020-10-02T04:44:16.371837Z","shell.execute_reply":"2020-10-02T04:44:16.37119Z"},"papermill":{"duration":0.514056,"end_time":"2020-10-02T04:44:16.371952","exception":false,"start_time":"2020-10-02T04:44:15.857896","status":"completed"},"tags":[],"trusted":true},"cell_type":"code","source":"data_model.save('my_model.h5')","execution_count":null,"outputs":[]},{"metadata":{"papermill":{"duration":0.485655,"end_time":"2020-10-02T04:44:17.357976","exception":false,"start_time":"2020-10-02T04:44:16.872321","status":"completed"},"tags":[],"trusted":false},"cell_type":"code","source":"","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":4}