{"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":"Today I will try using three different classification algorithms, xgboost, catboost, and lgbm. https://medium.com/@lionel821","metadata":{}},{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-10-14T04:25:01.734553Z","iopub.execute_input":"2022-10-14T04:25:01.735425Z","iopub.status.idle":"2022-10-14T04:25:01.750223Z","shell.execute_reply.started":"2022-10-14T04:25:01.735308Z","shell.execute_reply":"2022-10-14T04:25:01.748785Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.read_csv('/kaggle/input/tabular-playground-series-oct-2022/train_0.csv')\ntest_df = pd.read_csv('/kaggle/input/tabular-playground-series-oct-2022/test.csv')","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:01.754969Z","iopub.execute_input":"2022-10-14T04:25:01.755845Z","iopub.status.idle":"2022-10-14T04:25:36.585626Z","shell.execute_reply.started":"2022-10-14T04:25:01.755809Z","shell.execute_reply":"2022-10-14T04:25:36.584218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:36.587806Z","iopub.execute_input":"2022-10-14T04:25:36.588167Z","iopub.status.idle":"2022-10-14T04:25:37.129398Z","shell.execute_reply.started":"2022-10-14T04:25:36.588136Z","shell.execute_reply":"2022-10-14T04:25:37.128210Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.info()","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:37.131028Z","iopub.execute_input":"2022-10-14T04:25:37.131382Z","iopub.status.idle":"2022-10-14T04:25:37.145812Z","shell.execute_reply.started":"2022-10-14T04:25:37.131351Z","shell.execute_reply":"2022-10-14T04:25:37.144927Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:37.147965Z","iopub.execute_input":"2022-10-14T04:25:37.148489Z","iopub.status.idle":"2022-10-14T04:25:37.299372Z","shell.execute_reply.started":"2022-10-14T04:25:37.148456Z","shell.execute_reply":"2022-10-14T04:25:37.297965Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df.info()","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:37.301127Z","iopub.execute_input":"2022-10-14T04:25:37.301507Z","iopub.status.idle":"2022-10-14T04:25:37.405414Z","shell.execute_reply.started":"2022-10-14T04:25:37.301471Z","shell.execute_reply":"2022-10-14T04:25:37.403918Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Let's limit the number of columns same for both test and train","metadata":{}},{"cell_type":"code","source":"use_cols = [col for col in test_df.columns]\nuse_cols.remove('id')\nuse_cols.append('team_A_scoring_within_10sec')\nuse_cols.append('team_B_scoring_within_10sec')\nuse_cols","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:37.407258Z","iopub.execute_input":"2022-10-14T04:25:37.407750Z","iopub.status.idle":"2022-10-14T04:25:37.417793Z","shell.execute_reply.started":"2022-10-14T04:25:37.407702Z","shell.execute_reply":"2022-10-14T04:25:37.416375Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = train_df[use_cols]\ntrain_df","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:37.419999Z","iopub.execute_input":"2022-10-14T04:25:37.420513Z","iopub.status.idle":"2022-10-14T04:25:38.359599Z","shell.execute_reply.started":"2022-10-14T04:25:37.420465Z","shell.execute_reply":"2022-10-14T04:25:38.358317Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df = test_df.drop(['id'],axis=1)\ntest_df","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:38.361435Z","iopub.execute_input":"2022-10-14T04:25:38.361895Z","iopub.status.idle":"2022-10-14T04:25:38.542520Z","shell.execute_reply.started":"2022-10-14T04:25:38.361842Z","shell.execute_reply":"2022-10-14T04:25:38.541228Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"This should be much lighter","metadata":{}},{"cell_type":"markdown","source":"Now let's impute missing values","metadata":{}},{"cell_type":"code","source":"train_df.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:38.546360Z","iopub.execute_input":"2022-10-14T04:25:38.546723Z","iopub.status.idle":"2022-10-14T04:25:38.807296Z","shell.execute_reply.started":"2022-10-14T04:25:38.546690Z","shell.execute_reply":"2022-10-14T04:25:38.805955Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Let's find out the correlation between elements","metadata":{}},{"cell_type":"code","source":"covar = train_df.corr()['ball_pos_x'].abs().sort_values(ascending=False)\ncovar","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:38.811670Z","iopub.execute_input":"2022-10-14T04:25:38.812091Z","iopub.status.idle":"2022-10-14T04:25:57.774563Z","shell.execute_reply.started":"2022-10-14T04:25:38.812056Z","shell.execute_reply":"2022-10-14T04:25:57.773738Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"covar.index[1]","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:57.776006Z","iopub.execute_input":"2022-10-14T04:25:57.776573Z","iopub.status.idle":"2022-10-14T04:25:57.783266Z","shell.execute_reply.started":"2022-10-14T04:25:57.776536Z","shell.execute_reply":"2022-10-14T04:25:57.782189Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Seems like we can impute using the second most correlated variable.","metadata":{}},{"cell_type":"code","source":"na_cols = [col for col in train_df.columns if train_df[col].isnull().sum()>0]\nna_cols","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:57.784527Z","iopub.execute_input":"2022-10-14T04:25:57.784862Z","iopub.status.idle":"2022-10-14T04:25:58.055362Z","shell.execute_reply.started":"2022-10-14T04:25:57.784831Z","shell.execute_reply":"2022-10-14T04:25:58.054148Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"We'll get the index of covars like this","metadata":{}},{"cell_type":"code","source":"col = 'p0_pos_x'\ncovar = train_df.corr()[col].abs().sort_values(ascending=False).index[1]\ncovar","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:25:58.057278Z","iopub.execute_input":"2022-10-14T04:25:58.058052Z","iopub.status.idle":"2022-10-14T04:26:17.030952Z","shell.execute_reply.started":"2022-10-14T04:25:58.058003Z","shell.execute_reply":"2022-10-14T04:26:17.029618Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.impute import KNNImputer\n\nimputer = KNNImputer(n_neighbors=2)","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:17.032495Z","iopub.execute_input":"2022-10-14T04:26:17.032862Z","iopub.status.idle":"2022-10-14T04:26:17.607895Z","shell.execute_reply.started":"2022-10-14T04:26:17.032828Z","shell.execute_reply":"2022-10-14T04:26:17.606346Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Running a KNNImputer across the whole dataset takes way too much time. Let's only make decision based on 5 most correlated columns. Edit) 5 takes way too long. I'll go with 3 Edit) Even this takes way too long. I'll try 2. Eidt) Even that takes way too long. I'll try n_neighbors=2. Edit) This is taking way too long. I'll scrap KNNimputer.","metadata":{}},{"cell_type":"code","source":"# %%time\n# for col in na_cols:\n#     covars = train_df.corr()[col].abs().sort_values(ascending=False).index[:3]\n#     for covar in covars: # the imputer will impute NAs for all 3 columns. remove redundancy by removing columns already imputed from na_cols\n#         if covar in na_cols:\n#             na_cols.remove(covar)\n#     knn_df = train_df[covars]\n#     imputer.fit_transform(knn_df)\n#     train_df[covars] = knn_df\n#     print(f'Imputation completed for {covars}')","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:17.609622Z","iopub.execute_input":"2022-10-14T04:26:17.610591Z","iopub.status.idle":"2022-10-14T04:26:17.617590Z","shell.execute_reply.started":"2022-10-14T04:26:17.610538Z","shell.execute_reply":"2022-10-14T04:26:17.615669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Let's simply impute the values as the median value of each columns","metadata":{}},{"cell_type":"code","source":"for col in na_cols:\n    train_df[col] = train_df[col].fillna(train_df[col].median())\ntrain_df.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:17.619099Z","iopub.execute_input":"2022-10-14T04:26:17.619618Z","iopub.status.idle":"2022-10-14T04:26:20.068797Z","shell.execute_reply.started":"2022-10-14T04:26:17.619574Z","shell.execute_reply":"2022-10-14T04:26:20.067705Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"na_cols = [col for col in test_df.columns if test_df[col].isnull().sum()>0]\nna_cols","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:20.070216Z","iopub.execute_input":"2022-10-14T04:26:20.070678Z","iopub.status.idle":"2022-10-14T04:26:20.172290Z","shell.execute_reply.started":"2022-10-14T04:26:20.070643Z","shell.execute_reply":"2022-10-14T04:26:20.171233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for col in na_cols:\n    test_df[col] = test_df[col].fillna(test_df[col].median())\ntest_df.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:20.173444Z","iopub.execute_input":"2022-10-14T04:26:20.174758Z","iopub.status.idle":"2022-10-14T04:26:21.168456Z","shell.execute_reply.started":"2022-10-14T04:26:20.174701Z","shell.execute_reply":"2022-10-14T04:26:21.167004Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.dtypes","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:21.170386Z","iopub.execute_input":"2022-10-14T04:26:21.170871Z","iopub.status.idle":"2022-10-14T04:26:21.185107Z","shell.execute_reply.started":"2022-10-14T04:26:21.170823Z","shell.execute_reply":"2022-10-14T04:26:21.183249Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Let's prepare the datasets","metadata":{}},{"cell_type":"code","source":"AX = train_df.drop(['team_A_scoring_within_10sec','team_B_scoring_within_10sec'],axis=1)\nAy = train_df['team_A_scoring_within_10sec']\nBX = train_df.drop(['team_A_scoring_within_10sec','team_B_scoring_within_10sec'],axis=1)\nBy = train_df['team_B_scoring_within_10sec']","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:21.187670Z","iopub.execute_input":"2022-10-14T04:26:21.188328Z","iopub.status.idle":"2022-10-14T04:26:21.901503Z","shell.execute_reply.started":"2022-10-14T04:26:21.188275Z","shell.execute_reply":"2022-10-14T04:26:21.900448Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import random\n# from sklearn.model_selection import train_test_split\n\n# AX_train, AX_valid, Ay_train, Ay_valid = train_test_split(AX, Ay, test_size = 0.1, random_state = random.randint(1,100))\n# BX_train, BX_valid, By_train, By_valid = train_test_split(BX, By, test_size = 0.1, random_state = random.randint(1,100))","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:21.903099Z","iopub.execute_input":"2022-10-14T04:26:21.904473Z","iopub.status.idle":"2022-10-14T04:26:21.913524Z","shell.execute_reply.started":"2022-10-14T04:26:21.904419Z","shell.execute_reply":"2022-10-14T04:26:21.912492Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The problem I found is that the output is the probability of each team scoring a goal. But the ys are results. So it might not be the most valuable predictor of success when met with actual test set. So I just decided to use the whole training set and not compare it to the validation set. This might prove to be disasterous but I'll come back to this later.","metadata":{}},{"cell_type":"markdown","source":"Okay, now let's try algorithms.","metadata":{}},{"cell_type":"markdown","source":"sklearn's logistic regression model's score was 0.21786","metadata":{}},{"cell_type":"markdown","source":"#1 LGBM Classifer score: 0.20376","metadata":{}},{"cell_type":"markdown","source":"I'll first try default parameter settings for all three algorithms","metadata":{}},{"cell_type":"code","source":"import lightgbm as lgb\n\nA_clf = lgb.LGBMClassifier(verbose=2)\nA_clf.fit(AX, Ay)\nprint()\nB_clf = lgb.LGBMClassifier(verbose=2)\nB_clf.fit(BX, By)","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:26:21.915487Z","iopub.execute_input":"2022-10-14T04:26:21.916355Z","iopub.status.idle":"2022-10-14T04:28:02.267962Z","shell.execute_reply.started":"2022-10-14T04:26:21.916302Z","shell.execute_reply":"2022-10-14T04:28:02.266963Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"I've discovered that lgbm's verbosity is set to 0 by default. verbose=1 will only print out the initial conditions and verbose=2 will print each training step.","metadata":{}},{"cell_type":"markdown","source":"I got this error","metadata":{}},{"cell_type":"markdown","source":"ValueError: DataFrame.dtypes for data must be int, float or bool.\nDid not expect the data types in the following fields: p0_pos_x, p0_pos_y, p0_pos_z, p0_vel_x, p0_vel_y, p0_vel_z, p0_boost, p1_pos_x, p1_pos_y, p1_pos_z, p1_vel_x, p1_vel_y, p1_vel_z, p1_boost, p2_pos_x, p2_pos_y, p2_pos_z, p2_vel_x, p2_vel_y, p2_vel_z, p2_boost, p3_pos_x, p3_pos_y, p3_pos_z, p3_vel_x, p3_vel_y, p3_vel_z, p3_boost, p4_pos_x, p4_pos_y, p4_pos_z, p4_vel_x, p4_vel_y, p4_vel_z, p4_boost, p5_pos_x, p5_pos_y, p5_pos_z, p5_vel_x, p5_vel_y, p5_vel_z, p5_boost","metadata":{}},{"cell_type":"markdown","source":"Apparently I had to impute the data as floats","metadata":{}},{"cell_type":"markdown","source":"Now let's get the predictions","metadata":{}},{"cell_type":"code","source":"# A_preds = A_clf.predict_proba(test_df)[:,1]\n# A_preds","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:02.271944Z","iopub.execute_input":"2022-10-14T04:28:02.272735Z","iopub.status.idle":"2022-10-14T04:28:02.279431Z","shell.execute_reply.started":"2022-10-14T04:28:02.272695Z","shell.execute_reply":"2022-10-14T04:28:02.278267Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# B_preds = B_clf.predict_proba(test_df)[:,1]\n# B_preds","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:02.281039Z","iopub.execute_input":"2022-10-14T04:28:02.281556Z","iopub.status.idle":"2022-10-14T04:28:02.298380Z","shell.execute_reply.started":"2022-10-14T04:28:02.281508Z","shell.execute_reply":"2022-10-14T04:28:02.297085Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#2 XGBoost","metadata":{}},{"cell_type":"markdown","source":"Verbosity of printing messages. Valid values of 0 (silent), 1 (warning), 2 (info), and 3 (debug). Takes more than 30 mintues to train a single model. Decided to abandon.","metadata":{}},{"cell_type":"code","source":"# import random\n# from xgboost import XGBClassifier\n\n# A_clf = XGBClassifier(verbosity=2)\n# A_clf.fit(AX, Ay)\n# print()\n# B_clf = XGBClassifier(verbosity=2)\n# B_clf.fit(AX, Ay)","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:02.300524Z","iopub.execute_input":"2022-10-14T04:28:02.300997Z","iopub.status.idle":"2022-10-14T04:28:02.309424Z","shell.execute_reply.started":"2022-10-14T04:28:02.300955Z","shell.execute_reply":"2022-10-14T04:28:02.308169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# A_preds = A_clf.predict_proba(test_df)[:,1]\n# A_preds","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:02.311037Z","iopub.execute_input":"2022-10-14T04:28:02.311379Z","iopub.status.idle":"2022-10-14T04:28:02.321174Z","shell.execute_reply.started":"2022-10-14T04:28:02.311349Z","shell.execute_reply":"2022-10-14T04:28:02.319999Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# B_preds = B_clf.predict_proba(test_df)[:,1]\n# B_preds","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:02.324927Z","iopub.execute_input":"2022-10-14T04:28:02.325272Z","iopub.status.idle":"2022-10-14T04:28:02.331237Z","shell.execute_reply.started":"2022-10-14T04:28:02.325242Z","shell.execute_reply":"2022-10-14T04:28:02.330206Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#3 Catboost Also abandoned. It takes way too long. Takes 11 minutes per model.","metadata":{}},{"cell_type":"markdown","source":"verbose=n display every nth iteration","metadata":{}},{"cell_type":"code","source":"# from catboost import CatBoostClassifier\n\n# A_clf = CatBoostClassifier(verbose=20)\n# A_clf.fit(AX,Ay)\n# B_clf = CatBoostClassifier(verbose=20)\n# B_clf.fit(BX,By)","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:02.337060Z","iopub.execute_input":"2022-10-14T04:28:02.337420Z","iopub.status.idle":"2022-10-14T04:28:02.343694Z","shell.execute_reply.started":"2022-10-14T04:28:02.337388Z","shell.execute_reply":"2022-10-14T04:28:02.342585Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"A_preds = A_clf.predict_proba(test_df)[:,1]\nA_preds","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:02.345760Z","iopub.execute_input":"2022-10-14T04:28:02.346266Z","iopub.status.idle":"2022-10-14T04:28:04.327989Z","shell.execute_reply.started":"2022-10-14T04:28:02.346219Z","shell.execute_reply":"2022-10-14T04:28:04.326972Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"B_preds = B_clf.predict_proba(test_df)[:,1]\nB_preds","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:04.332045Z","iopub.execute_input":"2022-10-14T04:28:04.333281Z","iopub.status.idle":"2022-10-14T04:28:06.447908Z","shell.execute_reply.started":"2022-10-14T04:28:04.333234Z","shell.execute_reply":"2022-10-14T04:28:06.446801Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Get the submission format.","metadata":{}},{"cell_type":"code","source":"sample_df = pd.read_csv('/kaggle/input/tabular-playground-series-oct-2022/sample_submission.csv')\nsample_df","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:06.449685Z","iopub.execute_input":"2022-10-14T04:28:06.450420Z","iopub.status.idle":"2022-10-14T04:28:06.574828Z","shell.execute_reply.started":"2022-10-14T04:28:06.450373Z","shell.execute_reply":"2022-10-14T04:28:06.573575Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_df['team_A_scoring_within_10sec'] = A_preds\nsample_df['team_B_scoring_within_10sec'] = B_preds\nsample_df","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:06.576428Z","iopub.execute_input":"2022-10-14T04:28:06.577126Z","iopub.status.idle":"2022-10-14T04:28:06.602211Z","shell.execute_reply.started":"2022-10-14T04:28:06.577084Z","shell.execute_reply":"2022-10-14T04:28:06.600707Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_df.to_csv('submission.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2022-10-14T04:28:06.604132Z","iopub.execute_input":"2022-10-14T04:28:06.604849Z","iopub.status.idle":"2022-10-14T04:28:09.339134Z","shell.execute_reply.started":"2022-10-14T04:28:06.604808Z","shell.execute_reply":"2022-10-14T04:28:09.337725Z"},"trusted":true},"execution_count":null,"outputs":[]}]}