{"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 os\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\nimport gc \nimport warnings\nwarnings.filterwarnings(action='ignore')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-02-24T08:37:52.258041Z","iopub.execute_input":"2022-02-24T08:37:52.258701Z","iopub.status.idle":"2022-02-24T08:37:52.998818Z","shell.execute_reply.started":"2022-02-24T08:37:52.258664Z","shell.execute_reply":"2022-02-24T08:37:52.998046Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_csv('../input/g-research-crypto-forecasting/train.csv')\nprint(train.shape)\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:37:53.000503Z","iopub.execute_input":"2022-02-24T08:37:53.000802Z","iopub.status.idle":"2022-02-24T08:38:47.442958Z","shell.execute_reply.started":"2022-02-24T08:37:53.000729Z","shell.execute_reply":"2022-02-24T08:38:47.442033Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.isna().sum()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:47.444296Z","iopub.execute_input":"2022-02-24T08:38:47.444625Z","iopub.status.idle":"2022-02-24T08:38:47.869791Z","shell.execute_reply.started":"2022-02-24T08:38:47.444591Z","shell.execute_reply":"2022-02-24T08:38:47.868908Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"supplemetal_train = pd.read_csv('../input/g-research-crypto-forecasting/supplemental_train.csv')\nsupplemetal_train","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:47.871984Z","iopub.execute_input":"2022-02-24T08:38:47.872333Z","iopub.status.idle":"2022-02-24T08:38:53.901388Z","shell.execute_reply.started":"2022-02-24T08:38:47.872294Z","shell.execute_reply":"2022-02-24T08:38:53.900659Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"supplemetal_train.isna().sum()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:53.902541Z","iopub.execute_input":"2022-02-24T08:38:53.905085Z","iopub.status.idle":"2022-02-24T08:38:53.957916Z","shell.execute_reply.started":"2022-02-24T08:38:53.905029Z","shell.execute_reply":"2022-02-24T08:38:53.957242Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cat_train = pd.concat([train,supplemetal_train])\ncat_train","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:53.960046Z","iopub.execute_input":"2022-02-24T08:38:53.960479Z","iopub.status.idle":"2022-02-24T08:38:54.843512Z","shell.execute_reply.started":"2022-02-24T08:38:53.960440Z","shell.execute_reply":"2022-02-24T08:38:54.842798Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del train,supplemetal_train\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:54.844928Z","iopub.execute_input":"2022-02-24T08:38:54.845489Z","iopub.status.idle":"2022-02-24T08:38:54.949394Z","shell.execute_reply.started":"2022-02-24T08:38:54.845447Z","shell.execute_reply":"2022-02-24T08:38:54.948513Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"asset_detail = pd.read_csv('../input/g-research-crypto-forecasting/asset_details.csv')\nasset_detail","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:54.950942Z","iopub.execute_input":"2022-02-24T08:38:54.951415Z","iopub.status.idle":"2022-02-24T08:38:54.971459Z","shell.execute_reply.started":"2022-02-24T08:38:54.951374Z","shell.execute_reply":"2022-02-24T08:38:54.970794Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set = cat_train.merge(asset_detail,on='Asset_ID',how='left')\ntrain_set","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:54.972741Z","iopub.execute_input":"2022-02-24T08:38:54.973042Z","iopub.status.idle":"2022-02-24T08:38:58.431737Z","shell.execute_reply.started":"2022-02-24T08:38:54.973006Z","shell.execute_reply":"2022-02-24T08:38:58.431021Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del cat_train\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:58.434937Z","iopub.execute_input":"2022-02-24T08:38:58.435178Z","iopub.status.idle":"2022-02-24T08:38:58.532661Z","shell.execute_reply.started":"2022-02-24T08:38:58.435144Z","shell.execute_reply":"2022-02-24T08:38:58.531821Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set.isna().sum()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:38:58.533857Z","iopub.execute_input":"2022-02-24T08:38:58.534428Z","iopub.status.idle":"2022-02-24T08:39:02.325528Z","shell.execute_reply.started":"2022-02-24T08:38:58.534387Z","shell.execute_reply":"2022-02-24T08:39:02.324771Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set.dropna(inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:02.327079Z","iopub.execute_input":"2022-02-24T08:39:02.327366Z","iopub.status.idle":"2022-02-24T08:39:10.877177Z","shell.execute_reply.started":"2022-02-24T08:39:02.327330Z","shell.execute_reply":"2022-02-24T08:39:10.876117Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:10.878767Z","iopub.execute_input":"2022-02-24T08:39:10.879053Z","iopub.status.idle":"2022-02-24T08:39:10.980957Z","shell.execute_reply.started":"2022-02-24T08:39:10.879016Z","shell.execute_reply":"2022-02-24T08:39:10.979870Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test = pd.read_csv('../input/g-research-crypto-forecasting/example_test.csv')\nprint(test.shape)\ntest.head()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:10.982449Z","iopub.execute_input":"2022-02-24T08:39:10.982923Z","iopub.status.idle":"2022-02-24T08:39:11.008852Z","shell.execute_reply.started":"2022-02-24T08:39:10.982871Z","shell.execute_reply":"2022-02-24T08:39:11.008131Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_set = test.merge(asset_detail,on='Asset_ID',how='left')\ntest_set.head()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.010066Z","iopub.execute_input":"2022-02-24T08:39:11.010758Z","iopub.status.idle":"2022-02-24T08:39:11.031515Z","shell.execute_reply.started":"2022-02-24T08:39:11.010717Z","shell.execute_reply":"2022-02-24T08:39:11.030814Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.read_csv('../input/g-research-crypto-forecasting/example_sample_submission.csv')\nprint(submission.shape)\nsubmission.head()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.034411Z","iopub.execute_input":"2022-02-24T08:39:11.035034Z","iopub.status.idle":"2022-02-24T08:39:11.049178Z","shell.execute_reply.started":"2022-02-24T08:39:11.035000Z","shell.execute_reply":"2022-02-24T08:39:11.048428Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set.keys()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.050363Z","iopub.execute_input":"2022-02-24T08:39:11.050760Z","iopub.status.idle":"2022-02-24T08:39:11.056733Z","shell.execute_reply.started":"2022-02-24T08:39:11.050725Z","shell.execute_reply":"2022-02-24T08:39:11.055843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# corr_data = train_set[train_set.keys()]\n# cols = corr_data.corr().nlargest(len(corr_data.keys()),'Target')['Target'].index\n# colormap = plt.cm.PuBu\n# print(cols)\n# cm = np.corrcoef(train_set[cols].values.T)\n# f, ax = plt.subplots(figsize=(15,8))\n# heatmap = sns.heatmap(cm,vmax=1,square=True,annot=True,cmap=colormap,xticklabels=cols.values,\n#                       linewidths=0.1,linecolor='white',yticklabels=cols.values)\n","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.058321Z","iopub.execute_input":"2022-02-24T08:39:11.058960Z","iopub.status.idle":"2022-02-24T08:39:11.063406Z","shell.execute_reply.started":"2022-02-24T08:39:11.058791Z","shell.execute_reply":"2022-02-24T08:39:11.062519Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# del corr_data,cm\n# gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.064993Z","iopub.execute_input":"2022-02-24T08:39:11.065490Z","iopub.status.idle":"2022-02-24T08:39:11.071155Z","shell.execute_reply.started":"2022-02-24T08:39:11.065453Z","shell.execute_reply":"2022-02-24T08:39:11.070442Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def VMA(data):\n    data['VMA'] =  data['VWAP']/data['Volume']\n    data['VC'] = data['Close']/data['Volume']\n    return data","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.072489Z","iopub.execute_input":"2022-02-24T08:39:11.073079Z","iopub.status.idle":"2022-02-24T08:39:11.078964Z","shell.execute_reply.started":"2022-02-24T08:39:11.073038Z","shell.execute_reply":"2022-02-24T08:39:11.078215Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set = VMA(train_set)\ntest_set = VMA(test_set)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.080014Z","iopub.execute_input":"2022-02-24T08:39:11.080744Z","iopub.status.idle":"2022-02-24T08:39:11.369882Z","shell.execute_reply.started":"2022-02-24T08:39:11.080707Z","shell.execute_reply":"2022-02-24T08:39:11.369116Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.371069Z","iopub.execute_input":"2022-02-24T08:39:11.371335Z","iopub.status.idle":"2022-02-24T08:39:11.468631Z","shell.execute_reply.started":"2022-02-24T08:39:11.371295Z","shell.execute_reply":"2022-02-24T08:39:11.467779Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"target = train_set.pop('Target')\nprint(train_set.shape,target.shape)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.470398Z","iopub.execute_input":"2022-02-24T08:39:11.471106Z","iopub.status.idle":"2022-02-24T08:39:11.478474Z","shell.execute_reply.started":"2022-02-24T08:39:11.471005Z","shell.execute_reply":"2022-02-24T08:39:11.477462Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow.keras.layers import Dense,BatchNormalization,Dropout,GaussianNoise\nfrom tensorflow.keras.activations import swish\nfrom tensorflow.keras.models import Sequential\n","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:11.480062Z","iopub.execute_input":"2022-02-24T08:39:11.480408Z","iopub.status.idle":"2022-02-24T08:39:16.197908Z","shell.execute_reply.started":"2022-02-24T08:39:11.480370Z","shell.execute_reply":"2022-02-24T08:39:16.197098Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set.drop(['Asset_ID','Asset_Name','timestamp'],axis=1,inplace=True)\ntest_set.drop(['Asset_ID','Asset_Name','timestamp'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:16.199358Z","iopub.execute_input":"2022-02-24T08:39:16.199612Z","iopub.status.idle":"2022-02-24T08:39:19.543932Z","shell.execute_reply.started":"2022-02-24T08:39:16.199577Z","shell.execute_reply":"2022-02-24T08:39:19.542749Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set.head()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:19.545556Z","iopub.execute_input":"2022-02-24T08:39:19.545828Z","iopub.status.idle":"2022-02-24T08:39:19.561754Z","shell.execute_reply.started":"2022-02-24T08:39:19.545793Z","shell.execute_reply":"2022-02-24T08:39:19.561045Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set = train_set.astype(np.float16)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:19.563214Z","iopub.execute_input":"2022-02-24T08:39:19.563739Z","iopub.status.idle":"2022-02-24T08:39:22.332419Z","shell.execute_reply.started":"2022-02-24T08:39:19.563700Z","shell.execute_reply":"2022-02-24T08:39:22.331636Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:22.336541Z","iopub.execute_input":"2022-02-24T08:39:22.336758Z","iopub.status.idle":"2022-02-24T08:39:22.495836Z","shell.execute_reply.started":"2022-02-24T08:39:22.336731Z","shell.execute_reply":"2022-02-24T08:39:22.494993Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_set.info()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:49:48.369499Z","iopub.execute_input":"2022-02-24T08:49:48.370395Z","iopub.status.idle":"2022-02-24T08:49:48.389009Z","shell.execute_reply.started":"2022-02-24T08:49:48.370351Z","shell.execute_reply":"2022-02-24T08:49:48.387995Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:50:00.072842Z","iopub.execute_input":"2022-02-24T08:50:00.073440Z","iopub.status.idle":"2022-02-24T08:50:00.240588Z","shell.execute_reply.started":"2022-02-24T08:50:00.073400Z","shell.execute_reply":"2022-02-24T08:50:00.239854Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_set.head()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:50:02.592907Z","iopub.execute_input":"2022-02-24T08:50:02.593183Z","iopub.status.idle":"2022-02-24T08:50:02.613906Z","shell.execute_reply.started":"2022-02-24T08:50:02.593152Z","shell.execute_reply":"2022-02-24T08:50:02.612881Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from lightgbm import LGBMRegressor\nfrom sklearn.model_selection import KFold\nmodels = []\nkf = KFold(n_splits=5,shuffle=True)\nfor train_idx,valid_idx in kf.split(train_set,target):\n    train_x = train_set.values[train_idx]\n    train_y = target.values[train_idx]\n    val_x = train_set.values[valid_idx]\n    val_y = target.values[valid_idx]\n    \n    model = LGBMRegressor(objective='regression',\n                         max_depth=7,\n                         n_estimators=3000,\n                         learning_rate=0.05,\n                         num_leaves=31,\n                         n_jobs=-1,\n                         device='gpu')\n    model.fit(train_x,train_y,\n             eval_set=[(val_x,val_y)],\n             eval_metric=['rmse'],\n             early_stopping_rounds=300,\n             verbose=100\n             )\n    models.append(model)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:50:18.460329Z","iopub.execute_input":"2022-02-24T08:50:18.460852Z","iopub.status.idle":"2022-02-24T09:04:54.158143Z","shell.execute_reply.started":"2022-02-24T08:50:18.460811Z","shell.execute_reply":"2022-02-24T09:04:54.157280Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del train_set,target\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T09:04:54.208768Z","iopub.execute_input":"2022-02-24T09:04:54.209030Z","iopub.status.idle":"2022-02-24T09:04:54.414186Z","shell.execute_reply.started":"2022-02-24T09:04:54.208995Z","shell.execute_reply":"2022-02-24T09:04:54.413147Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_set.drop(['group_num','row_id'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T09:05:19.971639Z","iopub.execute_input":"2022-02-24T09:05:19.971965Z","iopub.status.idle":"2022-02-24T09:05:19.980753Z","shell.execute_reply.started":"2022-02-24T09:05:19.971924Z","shell.execute_reply":"2022-02-24T09:05:19.979769Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction = []\nfor model in models:\n    pred = model.predict(test_set.values)\n    prediction.append(pred)\nresult = np.mean(prediction,axis=0)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T09:06:43.671401Z","iopub.execute_input":"2022-02-24T09:06:43.672364Z","iopub.status.idle":"2022-02-24T09:06:43.680392Z","shell.execute_reply.started":"2022-02-24T09:06:43.672310Z","shell.execute_reply":"2022-02-24T09:06:43.679615Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result","metadata":{"execution":{"iopub.status.busy":"2022-02-24T09:06:47.862237Z","iopub.execute_input":"2022-02-24T09:06:47.862701Z","iopub.status.idle":"2022-02-24T09:06:47.872139Z","shell.execute_reply.started":"2022-02-24T09:06:47.862660Z","shell.execute_reply":"2022-02-24T09:06:47.870948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission['Target'] = result","metadata":{"execution":{"iopub.status.busy":"2022-02-24T09:07:02.270838Z","iopub.execute_input":"2022-02-24T09:07:02.271125Z","iopub.status.idle":"2022-02-24T09:07:02.276184Z","shell.execute_reply.started":"2022-02-24T09:07:02.271093Z","shell.execute_reply":"2022-02-24T09:07:02.275222Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission","metadata":{"execution":{"iopub.status.busy":"2022-02-24T09:07:05.431414Z","iopub.execute_input":"2022-02-24T09:07:05.431990Z","iopub.status.idle":"2022-02-24T09:07:05.448155Z","shell.execute_reply.started":"2022-02-24T09:07:05.431947Z","shell.execute_reply":"2022-02-24T09:07:05.447100Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model = Sequential()\n# model.add(Dense(256,input_shape=(11,),activation='swish',kernel_initializer='random_normal'))\n# model.add(BatchNormalization())\n# model.add(Dropout(0.25))\n# model.add(Dense(512,activation='swish'))\n# model.add(BatchNormalization())\n# model.add(Dropout(0.25))\n# model.add(Dense(256,activation='swish'))\n# model.add(BatchNormalization())\n# model.add(Dropout(0.25))\n# model.add(Dense(1))\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:22.816452Z","iopub.status.idle":"2022-02-24T08:39:22.817161Z","shell.execute_reply.started":"2022-02-24T08:39:22.816897Z","shell.execute_reply":"2022-02-24T08:39:22.816929Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model.compile(optimizer=tf.keras.optimizers.Adamax(learning_rate=0.0003),\n#              loss=tf.keras.metrics.MeanSquaredError(),\n#              metrics=['loss','val_loss'])","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:22.818234Z","iopub.status.idle":"2022-02-24T08:39:22.818970Z","shell.execute_reply.started":"2022-02-24T08:39:22.818669Z","shell.execute_reply":"2022-02-24T08:39:22.818696Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# earlystopping = tf.keras.callbacks.EarlyStopping(patience=5)\n# callbacks = tf.keras.callbacks.ModelCheckpoint('swish_mode.h5',monitor='val_loss')\n# scheduler = tf.keras.callbacks.ReduceLROnPlateau(\n#     monitor='val_loss',\n#     factor=0.6,\n#     patience=10,\n#     verbose=1,\n#     mode='auto',\n#     min_lr=0.0001,\n#     cooldown=5\n#     )","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:22.823568Z","iopub.status.idle":"2022-02-24T08:39:22.824315Z","shell.execute_reply.started":"2022-02-24T08:39:22.824034Z","shell.execute_reply":"2022-02-24T08:39:22.824066Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(x_train,y_train,validation_data=(x_val,y_val),\n                    callbacks=[callbacks,earlystopping,scheduler],\n                   epochs=50,batch_size=128)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T08:39:22.825507Z","iopub.status.idle":"2022-02-24T08:39:22.828242Z","shell.execute_reply.started":"2022-02-24T08:39:22.827976Z","shell.execute_reply":"2022-02-24T08:39:22.828004Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}