{"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":"# 🚚 Import","metadata":{"papermill":{"duration":0.007052,"end_time":"2022-10-09T18:15:04.105154","exception":false,"start_time":"2022-10-09T18:15:04.098102","status":"completed"},"tags":[]}},{"cell_type":"code","source":"import h5py\nfrom glob import glob\n\nimport numpy as np\nimport pandas as pd\n\nimport gc  # garbage collection\nimport json  # saving jsons\n\n# neural network\nimport tensorflow as tf\nfrom tensorflow.keras import layers\n\nfrom cv2 import resize\n\n# train test split\nfrom sklearn.model_selection import train_test_split\n\n# visualization\nfrom tensorflow.keras.utils import plot_model\nimport plotly.express as px\nimport plotly.graph_objects as go","metadata":{"papermill":{"duration":8.984311,"end_time":"2022-10-09T18:15:13.096715","exception":false,"start_time":"2022-10-09T18:15:04.112404","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-12T00:42:07.641899Z","iopub.execute_input":"2022-10-12T00:42:07.642297Z","iopub.status.idle":"2022-10-12T00:42:07.648555Z","shell.execute_reply.started":"2022-10-12T00:42:07.642266Z","shell.execute_reply":"2022-10-12T00:42:07.647518Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"config = {\n    \"sample\": 1,\n    \"sample_sample\": 1,\n    \"input_shape\": (36, 480, 2),\n    \"epochs\": 128,\n    \"batch_size\": 32,\n    \"learning_rate\": 0.000001\n}","metadata":{"papermill":{"duration":0.016625,"end_time":"2022-10-09T18:15:13.120819","exception":false,"start_time":"2022-10-09T18:15:13.104194","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-12T00:42:07.654964Z","iopub.execute_input":"2022-10-12T00:42:07.655599Z","iopub.status.idle":"2022-10-12T00:42:07.663412Z","shell.execute_reply.started":"2022-10-12T00:42:07.655572Z","shell.execute_reply":"2022-10-12T00:42:07.662512Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"np.random.seed(42)","metadata":{"papermill":{"duration":0.024346,"end_time":"2022-10-09T18:15:13.15258","exception":false,"start_time":"2022-10-09T18:15:13.128234","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-12T00:42:07.666633Z","iopub.execute_input":"2022-10-12T00:42:07.667644Z","iopub.status.idle":"2022-10-12T00:42:07.673698Z","shell.execute_reply.started":"2022-10-12T00:42:07.667617Z","shell.execute_reply":"2022-10-12T00:42:07.672818Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 🏋️ Data ETL","metadata":{"papermill":{"duration":0.00705,"end_time":"2022-10-09T18:15:13.167039","exception":false,"start_time":"2022-10-09T18:15:13.159989","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"## Main ETL Pipeline","metadata":{"papermill":{"duration":0.007483,"end_time":"2022-10-09T18:15:13.182199","exception":false,"start_time":"2022-10-09T18:15:13.174716","status":"completed"},"tags":[]}},{"cell_type":"code","source":"#labels_df = pd.read_csv('../input/g2net-detecting-continuous-gravitational-waves/train_labels.csv')\nlabels_df_sample = pd.read_csv('../input/g2net-detecting-continuous-gravitational-waves/sample_submission.csv')","metadata":{"papermill":{"duration":0.026687,"end_time":"2022-10-09T18:15:13.216081","exception":false,"start_time":"2022-10-09T18:15:13.189394","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-12T00:42:07.675745Z","iopub.execute_input":"2022-10-12T00:42:07.676445Z","iopub.status.idle":"2022-10-12T00:42:07.690862Z","shell.execute_reply.started":"2022-10-12T00:42:07.676411Z","shell.execute_reply":"2022-10-12T00:42:07.689937Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"labels_df['target'].value_counts()","metadata":{"papermill":{"duration":0.029779,"end_time":"2022-10-09T18:15:13.253101","exception":false,"start_time":"2022-10-09T18:15:13.223322","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-10T18:31:34.050391Z","iopub.execute_input":"2022-10-10T18:31:34.050658Z","iopub.status.idle":"2022-10-10T18:31:34.061424Z","shell.execute_reply.started":"2022-10-10T18:31:34.050633Z","shell.execute_reply":"2022-10-10T18:31:34.060311Z"}}},{"cell_type":"markdown","source":"Since our training set is huge, let's get a small sample","metadata":{"papermill":{"duration":0.007233,"end_time":"2022-10-09T18:15:13.267624","exception":false,"start_time":"2022-10-09T18:15:13.260391","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"#train_hdf5s = glob('../input/g2net-detecting-continuous-gravitational-waves/train/*')\ntrain_hdf5s_sample = glob('../input/g2net-detecting-continuous-gravitational-waves/test/*')\n#np.random.shuffle(train_hdf5s)\nnp.random.shuffle(train_hdf5s_sample)\n\n#full_train_size = len(train_hdf5s)\nfull_train_size_sample = len(train_hdf5s_sample)\n#train_hdf5s = train_hdf5s[:int(full_train_size * config[\"sample\"])]\ntrain_hdf5s_sample = train_hdf5s_sample[:int(full_train_size_sample * config[\"sample_sample\"])]","metadata":{"papermill":{"duration":0.06107,"end_time":"2022-10-09T18:15:13.335765","exception":false,"start_time":"2022-10-09T18:15:13.274695","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-10T18:31:34.063508Z","iopub.execute_input":"2022-10-10T18:31:34.064267Z","iopub.status.idle":"2022-10-10T18:31:34.363435Z","shell.execute_reply.started":"2022-10-10T18:31:34.064207Z","shell.execute_reply":"2022-10-10T18:31:34.362451Z"}}},{"cell_type":"code","source":"#print(len(train_hdf5s))\n#train_hdf5s[0]","metadata":{"papermill":{"duration":0.018935,"end_time":"2022-10-09T18:15:13.362189","exception":false,"start_time":"2022-10-09T18:15:13.343254","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-12T00:42:07.692798Z","iopub.execute_input":"2022-10-12T00:42:07.693386Z","iopub.status.idle":"2022-10-12T00:42:07.697109Z","shell.execute_reply.started":"2022-10-12T00:42:07.693353Z","shell.execute_reply":"2022-10-12T00:42:07.69618Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Let's visualize the hdf5 structure","metadata":{"papermill":{"duration":0.007631,"end_time":"2022-10-09T18:15:13.377815","exception":false,"start_time":"2022-10-09T18:15:13.370184","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"filename = train_hdf5s[0]\nwith h5py.File(filename, \"r\") as f:\n    for file_key in f.keys():\n        group = f[file_key]\n        print(group)\n        try:\n            for group_key in group.keys():\n                group2 = group[group_key]\n                print(f\"---->{group2}\")\n                for group_key2 in group2.keys():\n                        print(f\"--------->{group2[group_key2]}\")\n        except AttributeError:\n            pass","metadata":{"papermill":{"duration":0.029497,"end_time":"2022-10-09T18:15:13.414685","exception":false,"start_time":"2022-10-09T18:15:13.385188","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"Let's build our model only using the data from H1","metadata":{"papermill":{"duration":0.00743,"end_time":"2022-10-09T18:15:13.4301","exception":false,"start_time":"2022-10-09T18:15:13.42267","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"def etl(filenames):\n    ret = []\n\n    norm_real, norm_imag = 0, 0        \n    for filename in filenames:\n        with h5py.File(filename, \"r\") as f:\n            ind, *_ = f.keys()\n            \n            # check if label is valid\n            label = labels_df.loc[labels_df[\"id\"] == ind][\"target\"].values[0]\n            if label == -1:\n                continue\n            \n            group1 = f[ind]\n            h1, _, freqs_key = group1.keys()\n\n            # still don't know how to handle frequencies in model\n            freq = np.array(group1[freqs_key])[:, None]\n\n            group2 = group1[h1]\n            signal_key, *_ = group2.keys()\n            signal = np.array(group2[signal_key])\n            \n            # we get the wave's real and imaginary parts\n            signal_real = np.real(signal)\n            signal_imag = np.imag(signal)\n            \n            signal_real = resize(signal_real, dsize=config[\"input_shape\"][:2])\n            signal_imag = resize(signal_imag, dsize=config[\"input_shape\"][:2])\n            \n            norm_real = max(norm_real, np.amax(signal_real), -np.amin(signal_real))\n            norm_imag = max(norm_imag, np.amax(signal_imag), -np.amin(signal_imag))\n            \n            signal = np.stack([signal_real, signal_imag], axis=-1)\n            \n        \n        ret.append(\n            {\n                \"id\": ind,\n                \"signal\": signal,\n                \"freq\": freq,\n                \"label\": label\n            }\n        )\n    \n    # normalizing signal data between -1 and 1\n    for row in ret:\n        row[\"signal\"][:, :, 0] /= norm_real\n        row[\"signal\"][:, :, 1] /= norm_imag\n        \n    return pd.DataFrame(ret), norm_real, norm_imag","metadata":{}},{"cell_type":"code","source":"#%%time\n#train_data, norm_real, norm_imag = etl(train_hdf5s)","metadata":{"papermill":{"duration":75.704783,"end_time":"2022-10-09T18:16:29.172088","exception":false,"start_time":"2022-10-09T18:15:13.467305","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-12T00:42:07.698485Z","iopub.execute_input":"2022-10-12T00:42:07.699112Z","iopub.status.idle":"2022-10-12T00:42:07.7077Z","shell.execute_reply.started":"2022-10-12T00:42:07.699079Z","shell.execute_reply":"2022-10-12T00:42:07.706792Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#train_data","metadata":{"papermill":{"duration":9.068159,"end_time":"2022-10-09T18:16:38.248358","exception":false,"start_time":"2022-10-09T18:16:29.180199","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-12T00:42:07.71123Z","iopub.execute_input":"2022-10-12T00:42:07.711476Z","iopub.status.idle":"2022-10-12T00:42:07.717003Z","shell.execute_reply.started":"2022-10-12T00:42:07.711454Z","shell.execute_reply":"2022-10-12T00:42:07.716147Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 🧱 Build Model","metadata":{"papermill":{"duration":0.007919,"end_time":"2022-10-09T18:16:38.355488","exception":false,"start_time":"2022-10-09T18:16:38.347569","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"from tensorflow import keras\nembed_dim = 2  # Embedding size for each token\nnum_heads = 1 # Number of attention heads\nff_dim = 2  # Hidden layer size in feed forward network inside transformer\n\ninputs = layers.Input(shape=(480, 36, 2))\n\n#transformer_block = TransformerBlock(embed_dim, num_heads, ff_dim)\n#x = transformer_block(inputs)\nx = layers.Conv2D(4,3)(inputs)\nx = layers.SpatialDropout2D(0.2)(x)\nx = layers.BatchNormalization()(x)\nx = layers.MaxPool2D(3,3)(x)\nx = layers.Conv2D(16,3)(x)\nx = layers.SpatialDropout2D(0.2)(x)\nx = layers.BatchNormalization()(x)\nx = layers.MaxPool2D(3,3)(x)\nx = layers.Conv2D(64,3)(x)\nx = layers.SpatialDropout2D(0.2)(x)\nx = layers.BatchNormalization()(x)\nx = layers.GlobalAveragePooling2D()(x)\nx = layers.Dropout(0.2)(x)\nx = layers.Dense(64, activation=\"relu\")(x)\noutput = layers.Dropout(0.2)(x)\noutput = layers.Dense(1, activation=\"sigmoid\", name=\"output\")(output)\nmodel = keras.models.Model(inputs=inputs, \n              outputs=output)\nmodel.summary()","metadata":{"_kg_hide-output":true,"papermill":{"duration":3.591379,"end_time":"2022-10-09T18:16:41.988156","exception":false,"start_time":"2022-10-09T18:16:38.396777","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"# 🧠 Train Model","metadata":{"papermill":{"duration":0.009872,"end_time":"2022-10-09T18:16:43.184553","exception":false,"start_time":"2022-10-09T18:16:43.174681","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"model.compile(optimizer=\"adam\", loss='mse',metrics=['AUC'])\nhistory_of_my_ai_brain = model.fit(np.stack(train_data['signal'].values), train_data['label'].values, epochs=10,batch_size=16,validation_split=0.1)","metadata":{}},{"cell_type":"markdown","source":"fig = go.Figure()\nfig.add_trace(\n    go.Scatter(\n        x=[i+1 for i in range(len(history_of_my_ai_brain.history['auc']))],\n        y=history_of_my_ai_brain.history['auc'],\n        name='AUC'\n    )\n)\nfig.add_trace(\n    go.Scatter(\n        x=[i+1 for i in range(len(history_of_my_ai_brain.history['auc']))],\n        y=history_of_my_ai_brain.history['val_auc'],\n        name='Validation AUC'\n    )\n)\n\nmax_y = max(history_of_my_ai_brain.history['auc'] + history_of_my_ai_brain.history['val_auc'])\nfig.update_yaxes(\n    range=[0, 1],\n)\n\nfig.update_layout(\n    title='AUC Evolution over Epochs',\n    height=600\n)","metadata":{"papermill":{"duration":0.13222,"end_time":"2022-10-09T18:17:13.335244","exception":false,"start_time":"2022-10-09T18:17:13.203024","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"# 💾 Save Model","metadata":{"papermill":{"duration":0.024673,"end_time":"2022-10-09T18:17:13.384421","exception":false,"start_time":"2022-10-09T18:17:13.359748","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"model.save('g2_emirhan.h5')","metadata":{"papermill":{"duration":0.199332,"end_time":"2022-10-09T18:17:13.607938","exception":false,"start_time":"2022-10-09T18:17:13.408606","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-10T10:30:25.810554Z","iopub.execute_input":"2022-10-10T10:30:25.811496Z","iopub.status.idle":"2022-10-10T10:30:26.13738Z","shell.execute_reply.started":"2022-10-10T10:30:25.811457Z","shell.execute_reply":"2022-10-10T10:30:26.133751Z"}}},{"cell_type":"markdown","source":"from tensorflow.keras.models import load_model\nmodell = load_model('../input/myknn-algorithm/g2_emirhan_2.h5')\nmodell.summary()","metadata":{"execution":{"iopub.status.busy":"2022-10-10T18:31:34.389852Z","iopub.execute_input":"2022-10-10T18:31:34.390445Z","iopub.status.idle":"2022-10-10T18:31:38.332798Z","shell.execute_reply.started":"2022-10-10T18:31:34.390411Z","shell.execute_reply":"2022-10-10T18:31:38.331772Z"}}},{"cell_type":"markdown","source":"extra_parameters = {\n    \"input_shape\": list((480, 36, 2)),\n    \"norm_real\": str(norm_real),\n    \"norm_imag\": str(norm_imag)\n}","metadata":{"papermill":{"duration":0.033887,"end_time":"2022-10-09T18:17:13.666298","exception":false,"start_time":"2022-10-09T18:17:13.632411","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-10T10:30:30.732311Z","iopub.execute_input":"2022-10-10T10:30:30.732674Z","iopub.status.idle":"2022-10-10T10:30:30.756693Z","shell.execute_reply.started":"2022-10-10T10:30:30.732618Z","shell.execute_reply":"2022-10-10T10:30:30.75465Z"}}},{"cell_type":"markdown","source":"with open(\"extra_parameters.json\", \"w\") as f:\n    json.dump(extra_parameters, f, indent=4)","metadata":{"papermill":{"duration":0.0333,"end_time":"2022-10-09T18:17:13.724012","exception":false,"start_time":"2022-10-09T18:17:13.690712","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-10T10:30:30.758038Z","iopub.status.idle":"2022-10-10T10:30:30.758796Z","shell.execute_reply.started":"2022-10-10T10:30:30.75852Z","shell.execute_reply":"2022-10-10T10:30:30.758545Z"}}},{"cell_type":"markdown","source":"extra_parameters","metadata":{"papermill":{"duration":0.033992,"end_time":"2022-10-09T18:17:13.782445","exception":false,"start_time":"2022-10-09T18:17:13.748453","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-10-10T10:30:30.760389Z","iopub.status.idle":"2022-10-10T10:30:30.76128Z","shell.execute_reply.started":"2022-10-10T10:30:30.760884Z","shell.execute_reply":"2022-10-10T10:30:30.760909Z"}}},{"cell_type":"markdown","source":"filename = train_hdf5s_sample[0]\nwith h5py.File(filename, \"r\") as f:\n    for file_key in f.keys():\n        group = f[file_key]\n        print(group)\n        try:\n            for group_key in group.keys():\n                group2 = group[group_key]\n                print(f\"---->{group2}\")\n                for group_key2 in group2.keys():\n                        print(f\"--------->{group2[group_key2]}\")\n        except AttributeError:\n            pass","metadata":{"execution":{"iopub.status.busy":"2022-10-10T18:31:38.33422Z","iopub.execute_input":"2022-10-10T18:31:38.334854Z","iopub.status.idle":"2022-10-10T18:31:38.360297Z","shell.execute_reply.started":"2022-10-10T18:31:38.334817Z","shell.execute_reply":"2022-10-10T18:31:38.359279Z"}}},{"cell_type":"markdown","source":"def etl(filenames):\n    ret = []\n\n    test_norm_real, test_norm_imag = 0, 0        \n    for filename in filenames:\n        with h5py.File(filename, \"r\") as f:\n            ind, *_ = f.keys()\n            \n            # check if label is valid\n            label = labels_df_sample.loc[labels_df_sample[\"id\"] == ind][\"target\"].values[0]\n            if label == -1:\n                continue\n            \n            group1 = f[ind]\n            h1, _, freqs_key = group1.keys()\n\n            # still don't know how to handle frequencies in model\n            freq = np.array(group1[freqs_key])[:, None]\n\n            group2 = group1[h1]\n            signal_key, *_ = group2.keys()\n            signal = np.array(group2[signal_key])\n            \n            # we get the wave's real and imaginary parts\n            signal_real = np.real(signal)\n            signal_imag = np.imag(signal)\n            \n            signal_real = resize(signal_real, dsize=config[\"input_shape\"][:2])\n            signal_imag = resize(signal_imag, dsize=config[\"input_shape\"][:2])\n            \n            test_norm_real = max(test_norm_real, np.amax(signal_real), -np.amin(signal_real))\n            test_norm_imag = max(test_norm_imag, np.amax(signal_imag), -np.amin(signal_imag))\n            \n            signal = np.stack([signal_real, signal_imag], axis=-1)\n            \n        \n        ret.append(\n            {\n                \"id\": ind,\n                \"signal\": signal,\n                \"freq\": freq,\n                \"label\": label\n            }\n        )\n    \n    # normalizing signal data between -1 and 1\n    for row in ret:\n        row[\"signal\"][:, :, 0] /= test_norm_real\n        row[\"signal\"][:, :, 1] /= test_norm_imag\n        \n    return pd.DataFrame(ret), test_norm_real, test_norm_imag","metadata":{"execution":{"iopub.status.busy":"2022-10-10T18:31:38.362197Z","iopub.execute_input":"2022-10-10T18:31:38.362938Z","iopub.status.idle":"2022-10-10T18:31:38.375032Z","shell.execute_reply.started":"2022-10-10T18:31:38.362901Z","shell.execute_reply":"2022-10-10T18:31:38.373994Z"}}},{"cell_type":"markdown","source":"%%time\ntest_data, test_norm_real, test_norm_imag = etl(train_hdf5s_sample)","metadata":{"execution":{"iopub.status.busy":"2022-10-10T18:31:38.378233Z","iopub.execute_input":"2022-10-10T18:31:38.378524Z","iopub.status.idle":"2022-10-10T18:49:02.113751Z","shell.execute_reply.started":"2022-10-10T18:31:38.378498Z","shell.execute_reply":"2022-10-10T18:49:02.112818Z"}}},{"cell_type":"markdown","source":"a = np.stack(test_data['signal'].values)\nnp.save('data.npy', a)","metadata":{"execution":{"iopub.status.busy":"2022-10-10T19:02:43.673174Z","iopub.execute_input":"2022-10-10T19:02:43.673542Z","iopub.status.idle":"2022-10-10T19:02:46.942925Z","shell.execute_reply.started":"2022-10-10T19:02:43.673511Z","shell.execute_reply":"2022-10-10T19:02:46.941614Z"}}},{"cell_type":"code","source":"test_data = np.load(\"../input/myknn-algorithm/data.npy\")\ntest_data.shape","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:42:07.718311Z","iopub.execute_input":"2022-10-12T00:42:07.718822Z","iopub.status.idle":"2022-10-12T00:42:16.446814Z","shell.execute_reply.started":"2022-10-12T00:42:07.718788Z","shell.execute_reply":"2022-10-12T00:42:16.445732Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"test_data = test_data.reshape(7975,120,96,3)\ntest_data.shape","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:19:59.418033Z","iopub.execute_input":"2022-10-12T00:19:59.418933Z","iopub.status.idle":"2022-10-12T00:19:59.426933Z","shell.execute_reply.started":"2022-10-12T00:19:59.418871Z","shell.execute_reply":"2022-10-12T00:19:59.42571Z"}}},{"cell_type":"markdown","source":"from tensorflow.keras.models import load_model\nmodell = load_model('../input/myknn-algorithm/mobilenet.h5')\nmodell.summary()","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:19:59.43203Z","iopub.execute_input":"2022-10-12T00:19:59.432377Z","iopub.status.idle":"2022-10-12T00:20:03.562049Z","shell.execute_reply.started":"2022-10-12T00:19:59.432349Z","shell.execute_reply":"2022-10-12T00:20:03.559907Z"}}},{"cell_type":"code","source":"import pickle\nwith open('../input/myknn-algorithm/model_5.pkl', 'rb') as f:\n    modell = pickle.load(f)","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:42:16.448364Z","iopub.execute_input":"2022-10-12T00:42:16.448715Z","iopub.status.idle":"2022-10-12T00:42:16.477378Z","shell.execute_reply.started":"2022-10-12T00:42:16.448681Z","shell.execute_reply":"2022-10-12T00:42:16.476509Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\ntest_data = test_data.reshape(7975,-1)\nprediction = modell.predict(test_data)","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:42:16.480895Z","iopub.execute_input":"2022-10-12T00:42:16.48117Z","iopub.status.idle":"2022-10-12T00:42:17.431345Z","shell.execute_reply.started":"2022-10-12T00:42:16.481146Z","shell.execute_reply":"2022-10-12T00:42:17.429994Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction.shape","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:42:17.43306Z","iopub.execute_input":"2022-10-12T00:42:17.433705Z","iopub.status.idle":"2022-10-12T00:42:17.440692Z","shell.execute_reply.started":"2022-10-12T00:42:17.433668Z","shell.execute_reply":"2022-10-12T00:42:17.439663Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction = prediction.reshape(-1,1)\nprediction.shape","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:42:17.442409Z","iopub.execute_input":"2022-10-12T00:42:17.443208Z","iopub.status.idle":"2022-10-12T00:42:17.454364Z","shell.execute_reply.started":"2022-10-12T00:42:17.443161Z","shell.execute_reply":"2022-10-12T00:42:17.453121Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels_df_sample['target']=prediction\nlabels_df_sample.to_csv('submission.csv',index=False)\nlabels_df_sample","metadata":{"execution":{"iopub.status.busy":"2022-10-12T00:42:17.456369Z","iopub.execute_input":"2022-10-12T00:42:17.457369Z","iopub.status.idle":"2022-10-12T00:42:17.53137Z","shell.execute_reply.started":"2022-10-12T00:42:17.457321Z","shell.execute_reply":"2022-10-12T00:42:17.530212Z"},"trusted":true},"execution_count":null,"outputs":[]}]}