{"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":"## Cài đặt các thư viện cần thiết","metadata":{}},{"cell_type":"code","source":"!pip install ../input/python-datatable/datatable-0.11.0-cp37-cp37m-manylinux2010_x86_64.whl","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:52:43.942365Z","iopub.execute_input":"2022-05-27T06:52:43.942739Z","iopub.status.idle":"2022-05-27T06:53:09.950064Z","shell.execute_reply.started":"2022-05-27T06:52:43.942705Z","shell.execute_reply":"2022-05-27T06:53:09.948786Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport datatable as dt\nimport numpy as np\nfrom matplotlib import pyplot as plt\nimport seaborn as sns\nimport os\n\nimport riiideducation\n\nfrom sklearn.metrics import roc_auc_score,mean_squared_error,roc_curve\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.preprocessing import StandardScaler\n\nimport tensorflow as tf\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import BatchNormalization,Dropout,Dense,Flatten,Conv1D, MaxPooling1D,LSTM,GRU\nfrom tensorflow.keras.optimizers import Adam\nfrom keras.metrics import BinaryAccuracy,MeanSquaredError\nfrom keras import backend as K","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:53:36.432196Z","iopub.execute_input":"2022-05-27T06:53:36.432600Z","iopub.status.idle":"2022-05-27T06:53:36.439627Z","shell.execute_reply.started":"2022-05-27T06:53:36.432560Z","shell.execute_reply":"2022-05-27T06:53:36.438522Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import warnings\nwarnings.filterwarnings(\"ignore\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-05-27T06:53:41.539813Z","iopub.execute_input":"2022-05-27T06:53:41.540493Z","iopub.status.idle":"2022-05-27T06:53:41.545131Z","shell.execute_reply.started":"2022-05-27T06:53:41.540420Z","shell.execute_reply":"2022-05-27T06:53:41.544421Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Kiểm tra dữ liệu đang có","metadata":{}},{"cell_type":"code","source":"os.listdir('../input/riiid-test-answer-prediction')","metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","execution":{"iopub.status.busy":"2022-05-27T06:53:43.402524Z","iopub.execute_input":"2022-05-27T06:53:43.402858Z","iopub.status.idle":"2022-05-27T06:53:43.410166Z","shell.execute_reply.started":"2022-05-27T06:53:43.402830Z","shell.execute_reply":"2022-05-27T06:53:43.409391Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lectures_csv = dt.fread(\"../input/riiid-test-answer-prediction/lectures.csv\").to_pandas()\nexample_test_csv = dt.fread(\"../input/riiid-test-answer-prediction/example_test.csv\").to_pandas()\ntrain_csv = pd.read_csv(\"../input/riiid-test-answer-prediction/train.csv\", nrows=10**6, low_memory=False)\nquestions_csv = dt.fread(\"../input/riiid-test-answer-prediction/questions.csv\").to_pandas()","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:53:45.518312Z","iopub.execute_input":"2022-05-27T06:53:45.518910Z","iopub.status.idle":"2022-05-27T06:53:46.613407Z","shell.execute_reply.started":"2022-05-27T06:53:45.518866Z","shell.execute_reply":"2022-05-27T06:53:46.612530Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Tiền xữ lý","metadata":{"trusted":true}},{"cell_type":"code","source":"# 0 nếu sự kiện là câu hỏi cho người dùng, 1 nếu sự kiện là người dùng đang xem bài giảng. Chỉ cần lấy câu hỏi\ntrain_csv = train_csv[train_csv.content_type_id == 0]\n# giá trị -1 là bài giảng\ntrain_csv = train_csv[train_csv.answered_correctly != -1]","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:53:48.310344Z","iopub.execute_input":"2022-05-27T06:53:48.310696Z","iopub.status.idle":"2022-05-27T06:53:48.431287Z","shell.execute_reply.started":"2022-05-27T06:53:48.310667Z","shell.execute_reply":"2022-05-27T06:53:48.430433Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_csv = train_csv.sort_values(['timestamp'], ascending=True).reset_index(drop = True)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:53:51.139044Z","iopub.execute_input":"2022-05-27T06:53:51.139413Z","iopub.status.idle":"2022-05-27T06:53:51.331192Z","shell.execute_reply.started":"2022-05-27T06:53:51.139380Z","shell.execute_reply":"2022-05-27T06:53:51.330427Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_csv.head(5)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:53:53.111187Z","iopub.execute_input":"2022-05-27T06:53:53.111596Z","iopub.status.idle":"2022-05-27T06:53:53.125381Z","shell.execute_reply.started":"2022-05-27T06:53:53.111560Z","shell.execute_reply":"2022-05-27T06:53:53.124397Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"content_mean_final = train_csv[['content_id','answered_correctly']].groupby(['content_id']).agg(['mean'])\ncontent_mean_final.columns = [\"answered_correctly_content_mean\"]","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:19.086520Z","iopub.execute_input":"2022-05-27T06:54:19.086871Z","iopub.status.idle":"2022-05-27T06:54:19.128133Z","shell.execute_reply.started":"2022-05-27T06:54:19.086836Z","shell.execute_reply":"2022-05-27T06:54:19.127402Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"user_mean_final = train_csv[['user_id','answered_correctly']].groupby(['user_id']).agg(['mean', 'sum', 'count'])\nuser_mean_final.columns = [\"answered_correctly_user_mean\", 'sum_correct', 'count']","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:21.231900Z","iopub.execute_input":"2022-05-27T06:54:21.232250Z","iopub.status.idle":"2022-05-27T06:54:21.276799Z","shell.execute_reply.started":"2022-05-27T06:54:21.232217Z","shell.execute_reply":"2022-05-27T06:54:21.275777Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Lưu dữ liệu cho fillna\nelapsed_time_mean_final = train_csv.prior_question_elapsed_time.mean()","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:23.520066Z","iopub.execute_input":"2022-05-27T06:54:23.520426Z","iopub.status.idle":"2022-05-27T06:54:23.525888Z","shell.execute_reply.started":"2022-05-27T06:54:23.520395Z","shell.execute_reply":"2022-05-27T06:54:23.525094Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_csv.drop(['timestamp', 'content_type_id'], axis=1, inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:27.290230Z","iopub.execute_input":"2022-05-27T06:54:27.290833Z","iopub.status.idle":"2022-05-27T06:54:27.318767Z","shell.execute_reply.started":"2022-05-27T06:54:27.290795Z","shell.execute_reply":"2022-05-27T06:54:27.317724Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Validation/Train datasets","metadata":{}},{"cell_type":"code","source":"validation = pd.DataFrame()\nfor i in range(4):\n    last_records = train_csv.drop_duplicates('user_id', keep = 'last')\n    train_csv = train_csv[~train_csv.index.isin(last_records.index)]\n    validation = validation.append(last_records)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:28.995253Z","iopub.execute_input":"2022-05-27T06:54:28.995638Z","iopub.status.idle":"2022-05-27T06:54:29.317155Z","shell.execute_reply.started":"2022-05-27T06:54:28.995603Z","shell.execute_reply":"2022-05-27T06:54:29.316271Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = pd.DataFrame()\nfor i in range(15):\n    last_records = train_csv.drop_duplicates('user_id', keep = 'last')\n    train_csv = train_csv[~train_csv.index.isin(last_records.index)]\n    X = X.append(last_records)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:31.351285Z","iopub.execute_input":"2022-05-27T06:54:31.351648Z","iopub.status.idle":"2022-05-27T06:54:32.412871Z","shell.execute_reply.started":"2022-05-27T06:54:31.351618Z","shell.execute_reply":"2022-05-27T06:54:32.412120Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"results_c = train_csv[['content_id','answered_correctly']].groupby(['content_id']).agg(['mean'])\nresults_c.columns = [\"answered_correctly_content_mean\"]\n\nresults_u = train_csv[['user_id','answered_correctly']].groupby(['user_id']).agg(['mean', 'sum', 'count'])\nresults_u.columns = [\"answered_correctly_user_mean\", 'sum_correct', 'count']","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:34.481630Z","iopub.execute_input":"2022-05-27T06:54:34.481967Z","iopub.status.idle":"2022-05-27T06:54:34.590479Z","shell.execute_reply.started":"2022-05-27T06:54:34.481940Z","shell.execute_reply":"2022-05-27T06:54:34.589667Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result_time_mean = train_csv.prior_question_elapsed_time.mean()","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:37.260982Z","iopub.execute_input":"2022-05-27T06:54:37.261315Z","iopub.status.idle":"2022-05-27T06:54:37.267061Z","shell.execute_reply.started":"2022-05-27T06:54:37.261287Z","shell.execute_reply":"2022-05-27T06:54:37.266155Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Giải phóng bọ nhớ\ndel(train_csv)","metadata":{"execution":{"iopub.status.busy":"2022-05-25T15:08:07.823557Z","iopub.execute_input":"2022-05-25T15:08:07.824184Z","iopub.status.idle":"2022-05-25T15:08:07.833311Z","shell.execute_reply.started":"2022-05-25T15:08:07.824147Z","shell.execute_reply":"2022-05-25T15:08:07.832364Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = pd.merge(X, results_u, on=['user_id'], how=\"left\")\nX = pd.merge(X, results_c, on=['content_id'], how=\"left\")","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:39.216667Z","iopub.execute_input":"2022-05-27T06:54:39.217005Z","iopub.status.idle":"2022-05-27T06:54:39.239915Z","shell.execute_reply.started":"2022-05-27T06:54:39.216969Z","shell.execute_reply":"2022-05-27T06:54:39.239157Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"validation = pd.merge(validation, results_u, on=['user_id'], how=\"left\")\nvalidation = pd.merge(validation, results_c, on=['content_id'], how=\"left\")","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:41.447804Z","iopub.execute_input":"2022-05-27T06:54:41.448133Z","iopub.status.idle":"2022-05-27T06:54:41.463579Z","shell.execute_reply.started":"2022-05-27T06:54:41.448104Z","shell.execute_reply":"2022-05-27T06:54:41.462808Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = X['answered_correctly']\nX = X.drop(['answered_correctly'], axis=1)\n\ny_val = validation['answered_correctly']\nX_val = validation.drop(['answered_correctly'], axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:44.121729Z","iopub.execute_input":"2022-05-27T06:54:44.122399Z","iopub.status.idle":"2022-05-27T06:54:44.134777Z","shell.execute_reply.started":"2022-05-27T06:54:44.122352Z","shell.execute_reply":"2022-05-27T06:54:44.133682Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X.columns","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:46.917822Z","iopub.execute_input":"2022-05-27T06:54:46.918499Z","iopub.status.idle":"2022-05-27T06:54:46.925664Z","shell.execute_reply.started":"2022-05-27T06:54:46.918451Z","shell.execute_reply":"2022-05-27T06:54:46.924823Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lencoder = LabelEncoder()\n\nX['prior_question_had_explanation'].fillna(False, inplace = True)\nX['prior_question_had_explanation_enc'] = lencoder.fit_transform(X['prior_question_had_explanation'])\nX['answered_correctly_user_mean'].fillna(0.5,  inplace=True)\nX['answered_correctly_content_mean'].fillna(0.5,  inplace=True)\nX['sum_correct'].fillna(0, inplace = True)\nX['count'].fillna(0, inplace = True)\nX['prior_question_elapsed_time'].fillna(result_time_mean, inplace = True)\n\nX_val['prior_question_had_explanation'].fillna(False, inplace = True)\nX_val['prior_question_had_explanation_enc'] = lencoder.fit_transform(X_val['prior_question_had_explanation'])\nX_val['answered_correctly_user_mean'].fillna(0.5,  inplace=True)\nX_val['answered_correctly_content_mean'].fillna(0.5,  inplace=True)\nX_val['sum_correct'].fillna(0, inplace = True)\nX_val['count'].fillna(0, inplace = True)\nX_val['prior_question_elapsed_time'].fillna(result_time_mean, inplace = True)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:48.891954Z","iopub.execute_input":"2022-05-27T06:54:48.892551Z","iopub.status.idle":"2022-05-27T06:54:48.916940Z","shell.execute_reply.started":"2022-05-27T06:54:48.892514Z","shell.execute_reply":"2022-05-27T06:54:48.916221Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = X[['answered_correctly_user_mean', 'answered_correctly_content_mean', 'sum_correct', 'count',\n       'prior_question_elapsed_time','prior_question_had_explanation_enc']]\nX_val = X_val[['answered_correctly_user_mean', 'answered_correctly_content_mean', 'sum_correct', 'count',\n       'prior_question_elapsed_time','prior_question_had_explanation_enc']]","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:51.269914Z","iopub.execute_input":"2022-05-27T06:54:51.270504Z","iopub.status.idle":"2022-05-27T06:54:51.280013Z","shell.execute_reply.started":"2022-05-27T06:54:51.270469Z","shell.execute_reply":"2022-05-27T06:54:51.278861Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"scaler = StandardScaler()\nX = scaler.fit_transform(X)\nX_val = scaler.transform(X_val)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:55.018797Z","iopub.execute_input":"2022-05-27T06:54:55.019150Z","iopub.status.idle":"2022-05-27T06:54:55.029468Z","shell.execute_reply.started":"2022-05-27T06:54:55.019119Z","shell.execute_reply":"2022-05-27T06:54:55.028216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### cnn","metadata":{}},{"cell_type":"code","source":"from tensorflow.keras.layers import Conv1D\nK.clear_session()\nX_train = X.reshape(X.shape[0], X.shape[1], 1)\nX_test = X_val.reshape(X_val.shape[0], X_val.shape[1], 1)\n    \nmodel=Sequential()\n\nmodel.add(Conv1D(32, 2, activation='sigmoid', input_shape=X_train[0].shape))\n\nmodel.add(Conv1D(24, 2, activation='relu', padding='causal'))\n\nmodel.add(Conv1D(128, 2, activation='relu', padding='causal'))\nmodel.add(Conv1D(256, 2, activation='relu', padding='causal'))\n\nmodel.add(Dense(64, activation='relu'))\nmodel.add(Dense(32, activation='relu'))\nmodel.add(Dense(28, activation='relu'))\nmodel.add(Flatten())\nmodel.add(Dense(1, activation='sigmoid'))\n\nmodel.compile(optimizer=Adam(learning_rate=0.01), loss='binary_crossentropy', metrics=[tf.keras.metrics.BinaryAccuracy()])","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:57.137483Z","iopub.execute_input":"2022-05-27T06:54:57.138121Z","iopub.status.idle":"2022-05-27T06:54:57.269270Z","shell.execute_reply.started":"2022-05-27T06:54:57.138081Z","shell.execute_reply":"2022-05-27T06:54:57.268539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history = model.fit(X_train, y, epochs=30, verbose=2, batch_size=50000)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:54:59.900673Z","iopub.execute_input":"2022-05-27T06:54:59.900993Z","iopub.status.idle":"2022-05-27T06:56:09.233675Z","shell.execute_reply.started":"2022-05-27T06:54:59.900964Z","shell.execute_reply":"2022-05-27T06:56:09.232788Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = model.predict(X_test)\ny_true = np.array(y_val)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:57:59.517735Z","iopub.execute_input":"2022-05-27T06:57:59.518498Z","iopub.status.idle":"2022-05-27T06:58:00.225124Z","shell.execute_reply.started":"2022-05-27T06:57:59.518454Z","shell.execute_reply":"2022-05-27T06:58:00.224071Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"roc_auc_score(y_true, y_pred)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T07:08:43.472999Z","iopub.execute_input":"2022-05-27T07:08:43.473406Z","iopub.status.idle":"2022-05-27T07:08:43.486601Z","shell.execute_reply.started":"2022-05-27T07:08:43.473363Z","shell.execute_reply":"2022-05-27T07:08:43.485679Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fpr, tpr, _ = roc_curve(y_true, y_pred)\n\nplt.plot(fpr,tpr)\nplt.ylabel('True Positive Rate')\nplt.xlabel('False Positive Rate')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:58:03.848834Z","iopub.execute_input":"2022-05-27T06:58:03.849195Z","iopub.status.idle":"2022-05-27T06:58:03.996469Z","shell.execute_reply.started":"2022-05-27T06:58:03.849166Z","shell.execute_reply":"2022-05-27T06:58:03.995573Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"mean_squared_error(y_true, y_pred)","metadata":{"execution":{"iopub.status.busy":"2022-05-27T06:58:07.122215Z","iopub.execute_input":"2022-05-27T06:58:07.123012Z","iopub.status.idle":"2022-05-27T06:58:07.132305Z","shell.execute_reply.started":"2022-05-27T06:58:07.122950Z","shell.execute_reply":"2022-05-27T06:58:07.130960Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Prediction","metadata":{}},{"cell_type":"code","source":"env = riiideducation.make_env()","metadata":{"execution":{"iopub.status.busy":"2022-05-27T07:00:23.603923Z","iopub.execute_input":"2022-05-27T07:00:23.604318Z","iopub.status.idle":"2022-05-27T07:00:23.652676Z","shell.execute_reply.started":"2022-05-27T07:00:23.604283Z","shell.execute_reply":"2022-05-27T07:00:23.651356Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"iter_test = env.iter_test()","metadata":{"execution":{"iopub.status.busy":"2022-05-27T07:00:27.327094Z","iopub.execute_input":"2022-05-27T07:00:27.327472Z","iopub.status.idle":"2022-05-27T07:00:27.331644Z","shell.execute_reply.started":"2022-05-27T07:00:27.327440Z","shell.execute_reply":"2022-05-27T07:00:27.330743Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for (test_df, sample_prediction_df) in iter_test:\n    test_df = pd.merge(test_df, user_mean_final, on=['user_id'],  how=\"left\")\n    test_df = pd.merge(test_df, content_mean_final, on=['content_id'],  how=\"left\")\n    \n    test_df['answered_correctly_user_mean'].fillna(0.5,  inplace=True)\n    test_df['answered_correctly_content_mean'].fillna(0.5,  inplace=True)\n    test_df['sum_correct'].fillna(0, inplace=True)\n    test_df['count'].fillna(0, inplace=True)\n    test_df['prior_question_elapsed_time'].fillna(elapsed_time_mean_final, inplace = True)\n    test_df['prior_question_had_explanation'].fillna(False, inplace=True)\n    test_df[\"prior_question_had_explanation_enc\"] = lencoder.transform(test_df[\"prior_question_had_explanation\"])\n\n    # fit transform cnn\n    X = scaler.transform(test_df[['answered_correctly_user_mean', 'answered_correctly_content_mean', 'sum_correct', 'count',\n                                  'prior_question_elapsed_time', 'prior_question_had_explanation_enc']])\n    test_df['answered_correctly'] = model.predict(X.reshape(X.shape[0], X.shape[1], 1))\n    \n    env.predict(test_df.loc[test_df['content_type_id'] == 0, ['row_id', 'answered_correctly']])","metadata":{"execution":{"iopub.status.busy":"2022-05-27T07:00:33.904071Z","iopub.execute_input":"2022-05-27T07:00:33.904782Z","iopub.status.idle":"2022-05-27T07:00:33.952642Z","shell.execute_reply.started":"2022-05-27T07:00:33.904725Z","shell.execute_reply":"2022-05-27T07:00:33.951236Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}