{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30804,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Final Submission\n*Strategy: Regressor the PCIAT-PCIAT_Total Feature*","metadata":{}},{"cell_type":"markdown","source":"## 1. Import neccessary libraries","metadata":{}},{"cell_type":"code","source":"import numpy as np, pandas as pd, os\nfrom sklearn.model_selection import cross_val_score, StratifiedKFold\nimport xgboost as xgb\nimport plotly.express as px\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nfrom sklearn.metrics import make_scorer, cohen_kappa_score\nimport os\nimport re\nfrom tqdm import tqdm\nfrom concurrent.futures import ThreadPoolExecutor\nimport warnings\nwarnings.simplefilter('ignore')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:04:35.802270Z","iopub.execute_input":"2024-12-19T18:04:35.802980Z","iopub.status.idle":"2024-12-19T18:04:37.426219Z","shell.execute_reply.started":"2024-12-19T18:04:35.802928Z","shell.execute_reply":"2024-12-19T18:04:37.425026Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 2. Reading data","metadata":{}},{"cell_type":"markdown","source":"### Read the csv file","metadata":{}},{"cell_type":"code","source":"df_train = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/train.csv', index_col='id')\ndf_test = pd.read_csv('/kaggle/input/child-mind-institute-problematic-internet-use/test.csv', index_col='id')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:04:37.427660Z","iopub.execute_input":"2024-12-19T18:04:37.429036Z","iopub.status.idle":"2024-12-19T18:04:37.497151Z","shell.execute_reply.started":"2024-12-19T18:04:37.428974Z","shell.execute_reply":"2024-12-19T18:04:37.495956Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Helper function to load time series file","metadata":{}},{"cell_type":"code","source":"def process_file(filename, dirname):\n    df = pd.read_parquet(os.path.join(dirname, filename, 'part-0.parquet'))\n    df.drop('step', axis=1, inplace=True)\n    return df.describe().values.reshape(-1), filename.split('=')[1]\n\ndef load_time_series(dirname) -> pd.DataFrame:\n    ids = os.listdir(dirname)\n    with ThreadPoolExecutor() as executor:\n        results = list(tqdm(executor.map(lambda fname: process_file(fname, dirname), ids), total=len(ids)))\n    stats, indexes = zip(*results)\n    df = pd.DataFrame(stats, columns=[f\"Stat_{i}\" for i in range(len(stats[0]))])\n    df['Index'] = indexes\n    df = df.set_index('Index')\n    return df","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:04:37.498635Z","iopub.execute_input":"2024-12-19T18:04:37.499142Z","iopub.status.idle":"2024-12-19T18:04:37.509009Z","shell.execute_reply.started":"2024-12-19T18:04:37.499084Z","shell.execute_reply":"2024-12-19T18:04:37.507581Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Read time series file","metadata":{}},{"cell_type":"code","source":"train_ts = load_time_series(\"/kaggle/input/child-mind-institute-problematic-internet-use/series_train.parquet\")\ntest_ts = load_time_series(\"/kaggle/input/child-mind-institute-problematic-internet-use/series_test.parquet\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:04:37.511137Z","iopub.execute_input":"2024-12-19T18:04:37.511625Z","iopub.status.idle":"2024-12-19T18:06:00.952326Z","shell.execute_reply.started":"2024-12-19T18:04:37.511565Z","shell.execute_reply":"2024-12-19T18:06:00.951234Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Concat the dataframes","metadata":{}},{"cell_type":"code","source":"df_train = df_train.join(train_ts, how=\"left\")\ndf_test = df_test.join(test_ts, how=\"left\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:00.953815Z","iopub.execute_input":"2024-12-19T18:06:00.954593Z","iopub.status.idle":"2024-12-19T18:06:00.972159Z","shell.execute_reply.started":"2024-12-19T18:06:00.954528Z","shell.execute_reply":"2024-12-19T18:06:00.971260Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_train.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:00.974853Z","iopub.execute_input":"2024-12-19T18:06:00.975191Z","iopub.status.idle":"2024-12-19T18:06:00.982670Z","shell.execute_reply.started":"2024-12-19T18:06:00.975160Z","shell.execute_reply":"2024-12-19T18:06:00.981585Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_test.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:00.984245Z","iopub.execute_input":"2024-12-19T18:06:00.984685Z","iopub.status.idle":"2024-12-19T18:06:00.994619Z","shell.execute_reply.started":"2024-12-19T18:06:00.984638Z","shell.execute_reply":"2024-12-19T18:06:00.993617Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"The test set has less features than the training data","metadata":{}},{"cell_type":"markdown","source":"## 3. Data preporcessing","metadata":{}},{"cell_type":"markdown","source":"### Remove samples that lack an output label.","metadata":{}},{"cell_type":"code","source":"df_train.dropna(subset='sii', inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:00.996015Z","iopub.execute_input":"2024-12-19T18:06:00.996412Z","iopub.status.idle":"2024-12-19T18:06:01.009387Z","shell.execute_reply.started":"2024-12-19T18:06:00.996380Z","shell.execute_reply":"2024-12-19T18:06:01.008260Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### List the missing columns","metadata":{}},{"cell_type":"code","source":"missing_columns = (set(df_train.columns) - set(df_test.columns)) - {'sii'}\nmissing_columns","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.010753Z","iopub.execute_input":"2024-12-19T18:06:01.011160Z","iopub.status.idle":"2024-12-19T18:06:01.026071Z","shell.execute_reply.started":"2024-12-19T18:06:01.011111Z","shell.execute_reply":"2024-12-19T18:06:01.024932Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sns.countplot(df_train, x = 'sii').set_title('Count of sii')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.027368Z","iopub.execute_input":"2024-12-19T18:06:01.027739Z","iopub.status.idle":"2024-12-19T18:06:01.250085Z","shell.execute_reply.started":"2024-12-19T18:06:01.027707Z","shell.execute_reply":"2024-12-19T18:06:01.248672Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"value_counts = df_train['sii'].value_counts()\nprint(value_counts)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.251586Z","iopub.execute_input":"2024-12-19T18:06:01.252038Z","iopub.status.idle":"2024-12-19T18:06:01.260006Z","shell.execute_reply.started":"2024-12-19T18:06:01.252002Z","shell.execute_reply":"2024-12-19T18:06:01.258813Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"bins = [-1, 30, 49, 79, float('inf')]\nlabels = ['0-30', '31-49', '50-79', '>=80']\n\npciat = df_train['PCIAT-PCIAT_Total']\npciat['range'] = pd.cut(df_train['PCIAT-PCIAT_Total'], bins=bins, labels=labels, right=True)\nvalue_pciat_counts = pciat['range'].value_counts().sort_index()\n\nprint(value_pciat_counts)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.261563Z","iopub.execute_input":"2024-12-19T18:06:01.262144Z","iopub.status.idle":"2024-12-19T18:06:01.277374Z","shell.execute_reply.started":"2024-12-19T18:06:01.262095Z","shell.execute_reply":"2024-12-19T18:06:01.276216Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"The distribution of samples across each range closely mirrors that of the `sii` values, prompting an examination of their correlation.","metadata":{}},{"cell_type":"code","source":"correlation = df_train['sii'].corr(df_train['PCIAT-PCIAT_Total'])\ncorrelation","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.278677Z","iopub.execute_input":"2024-12-19T18:06:01.279087Z","iopub.status.idle":"2024-12-19T18:06:01.289151Z","shell.execute_reply.started":"2024-12-19T18:06:01.279028Z","shell.execute_reply":"2024-12-19T18:06:01.288126Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**They have the strong positive correlation and almost reach the perfect threshold  \nSo, instead of predicting directly the `sii` label we will predict the `PCIAT-PCIAT_Total` feature and create a mapping function to map the results after predicting**","metadata":{}},{"cell_type":"code","source":"missing_columns.remove('PCIAT-PCIAT_Total')\ndf_train.drop(missing_columns, axis=1, inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.290277Z","iopub.execute_input":"2024-12-19T18:06:01.290606Z","iopub.status.idle":"2024-12-19T18:06:01.301658Z","shell.execute_reply.started":"2024-12-19T18:06:01.290574Z","shell.execute_reply":"2024-12-19T18:06:01.300634Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Encode the categorical features","metadata":{}},{"cell_type":"code","source":"categorical_cols = df_train.select_dtypes(include=['object', 'category']).columns.tolist()\n\nseason_map = {'Spring': 1, 'Summer': 2, 'Fall': 3, 'Winter': 4}\n\nfor col in categorical_cols:\n    df_train[col] = df_train[col].fillna(0)\n    df_train[col] = df_train[col].map(season_map).fillna(df_train[col])\n    \n    df_test[col] = df_test[col].fillna(0)\n    df_test[col] = df_test[col].map(season_map).fillna(df_test[col])\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.303063Z","iopub.execute_input":"2024-12-19T18:06:01.303478Z","iopub.status.idle":"2024-12-19T18:06:01.346388Z","shell.execute_reply.started":"2024-12-19T18:06:01.303431Z","shell.execute_reply":"2024-12-19T18:06:01.345306Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"Now the training data becomes","metadata":{}},{"cell_type":"code","source":"df_train","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.348405Z","iopub.execute_input":"2024-12-19T18:06:01.348874Z","iopub.status.idle":"2024-12-19T18:06:01.382949Z","shell.execute_reply.started":"2024-12-19T18:06:01.348792Z","shell.execute_reply":"2024-12-19T18:06:01.381813Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 4. Feature extraction","metadata":{}},{"cell_type":"markdown","source":"### Check correlation between each feature and PCIAT-PCIAT_Total","metadata":{}},{"cell_type":"code","source":"corr = pd.DataFrame(df_train.corr()['PCIAT-PCIAT_Total'].sort_values(ascending = False))\ncorr.style.background_gradient(cmap='coolwarm')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.384253Z","iopub.execute_input":"2024-12-19T18:06:01.384546Z","iopub.status.idle":"2024-12-19T18:06:01.600241Z","shell.execute_reply.started":"2024-12-19T18:06:01.384518Z","shell.execute_reply":"2024-12-19T18:06:01.599207Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Keep the most importance features","metadata":{}},{"cell_type":"code","source":"selected = corr[(corr['PCIAT-PCIAT_Total']>.05) | (corr['PCIAT-PCIAT_Total']<-.05)]\nselected = [col for col in selected.index]\nselected.remove('PCIAT-PCIAT_Total')\nselected.remove('sii')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.601888Z","iopub.execute_input":"2024-12-19T18:06:01.602594Z","iopub.status.idle":"2024-12-19T18:06:01.610118Z","shell.execute_reply.started":"2024-12-19T18:06:01.602542Z","shell.execute_reply":"2024-12-19T18:06:01.609002Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Check the missing values per feature","metadata":{}},{"cell_type":"code","source":"missing_ratio = df_train.isna().mean()\n\nmissing_ratio = missing_ratio[missing_ratio > 0]\nmissing_ratio = missing_ratio[~missing_ratio.index.str.contains('Stat')]\n\nmissing_df = missing_ratio.reset_index()\nmissing_df.columns = ['Feature', 'Missing Ratio']\n\nplt.figure(figsize=(10, 6))\nsns.barplot(data=missing_df, x='Feature', y='Missing Ratio', palette='coolwarm')\nplt.title('Missing Ratio per Feature (excluding time series)', fontsize=12)\nplt.ylabel('Missing Ratio (%)', fontsize=12)\nplt.xlabel('Features', fontsize=4)\nplt.xticks(rotation=45, ha='right')\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:01.611518Z","iopub.execute_input":"2024-12-19T18:06:01.611869Z","iopub.status.idle":"2024-12-19T18:06:02.267333Z","shell.execute_reply.started":"2024-12-19T18:06:01.611803Z","shell.execute_reply":"2024-12-19T18:06:02.266134Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Remove features which misses more than 1/2 excluding time series features","metadata":{}},{"cell_type":"code","source":"missing_half = [col for col in df_train.columns[df_train.isnull().sum()>len(df_train) / 2] if 'Stat' not in col]\nmissing_half","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.268939Z","iopub.execute_input":"2024-12-19T18:06:02.269300Z","iopub.status.idle":"2024-12-19T18:06:02.279924Z","shell.execute_reply.started":"2024-12-19T18:06:02.269267Z","shell.execute_reply":"2024-12-19T18:06:02.278853Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"selected = [i for i in selected if i not in missing_half]\nselected","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.285630Z","iopub.execute_input":"2024-12-19T18:06:02.286089Z","iopub.status.idle":"2024-12-19T18:06:02.293994Z","shell.execute_reply.started":"2024-12-19T18:06:02.286053Z","shell.execute_reply":"2024-12-19T18:06:02.292923Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 5. Training model","metadata":{}},{"cell_type":"markdown","source":"### Extract the data frame","metadata":{}},{"cell_type":"code","source":"X = df_train[selected]\ny = df_train['PCIAT-PCIAT_Total']\ndf_test = df_test[selected]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.295465Z","iopub.execute_input":"2024-12-19T18:06:02.295939Z","iopub.status.idle":"2024-12-19T18:06:02.310388Z","shell.execute_reply.started":"2024-12-19T18:06:02.295891Z","shell.execute_reply":"2024-12-19T18:06:02.309245Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.312050Z","iopub.execute_input":"2024-12-19T18:06:02.312948Z","iopub.status.idle":"2024-12-19T18:06:02.347606Z","shell.execute_reply.started":"2024-12-19T18:06:02.312828Z","shell.execute_reply":"2024-12-19T18:06:02.346554Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Convert from PCIAT-PCIAT_Total to sii","metadata":{}},{"cell_type":"code","source":"def convert(scores):\n    scores = np.array(scores) * 1.252\n    res = np.zeros_like(scores)\n    res[scores <= 30] = 0\n    res[(scores > 30) & (scores < 50)] = 1\n    res[(scores >= 50) & (scores < 80)] = 2\n    res[scores >= 80] = 3\n    return res","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:25.996479Z","iopub.execute_input":"2024-12-19T18:06:25.997033Z","iopub.status.idle":"2024-12-19T18:06:26.004253Z","shell.execute_reply.started":"2024-12-19T18:06:25.996991Z","shell.execute_reply":"2024-12-19T18:06:26.002781Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### The evaluation metric","metadata":{}},{"cell_type":"code","source":"def quadratic_weight_kappa(y_true, y_pred):\n    y_true_sii = convert(y_true)\n    y_pred_sii = convert(y_pred)\n    return cohen_kappa_score(y_true_sii, y_pred_sii, weights='quadratic')\n\nqwk_scorer = make_scorer(quadratic_weight_kappa, greater_is_better=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.358682Z","iopub.execute_input":"2024-12-19T18:06:02.359442Z","iopub.status.idle":"2024-12-19T18:06:02.369992Z","shell.execute_reply.started":"2024-12-19T18:06:02.359393Z","shell.execute_reply":"2024-12-19T18:06:02.368910Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### The split strategy","metadata":{}},{"cell_type":"code","source":"skf = StratifiedKFold(n_splits=5)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.371140Z","iopub.execute_input":"2024-12-19T18:06:02.371469Z","iopub.status.idle":"2024-12-19T18:06:02.384961Z","shell.execute_reply.started":"2024-12-19T18:06:02.371430Z","shell.execute_reply":"2024-12-19T18:06:02.383894Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### The model's params","metadata":{}},{"cell_type":"code","source":"xgb_params = {\n    'max_depth': 4,\n    'n_estimators': 157,\n    'learning_rate': 0.04007738100469222,\n    'subsample': 0.5432400998472477,\n    'colsample_bytree': 0.8214112330652663,\n    'random_state': 42,\n}\n\nmodel = xgb.XGBRegressor(**xgb_params)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.386264Z","iopub.execute_input":"2024-12-19T18:06:02.386593Z","iopub.status.idle":"2024-12-19T18:06:02.400028Z","shell.execute_reply.started":"2024-12-19T18:06:02.386555Z","shell.execute_reply":"2024-12-19T18:06:02.398857Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Train the model","metadata":{}},{"cell_type":"code","source":"model.fit(X,y)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:02.401547Z","iopub.execute_input":"2024-12-19T18:06:02.402075Z","iopub.status.idle":"2024-12-19T18:06:03.135278Z","shell.execute_reply.started":"2024-12-19T18:06:02.402029Z","shell.execute_reply":"2024-12-19T18:06:03.134355Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 6. Evaluate model","metadata":{}},{"cell_type":"code","source":"scores = cross_val_score(model, X, y, cv=skf, scoring=qwk_scorer)\nprint(\"QWK Scores:\", scores)\nprint(\"----> Mean QWK Score:\", np.mean(scores))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:38.600790Z","iopub.execute_input":"2024-12-19T18:06:38.601277Z","iopub.status.idle":"2024-12-19T18:06:42.251660Z","shell.execute_reply.started":"2024-12-19T18:06:38.601236Z","shell.execute_reply":"2024-12-19T18:06:42.249848Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"feature_imp = pd.Series(model.feature_importances_,index=X.columns).sort_values(ascending=False)\nfeature_imp","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:45.948118Z","iopub.execute_input":"2024-12-19T18:06:45.949479Z","iopub.status.idle":"2024-12-19T18:06:45.961948Z","shell.execute_reply.started":"2024-12-19T18:06:45.949420Z","shell.execute_reply":"2024-12-19T18:06:45.960676Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 7. Submit to competition","metadata":{}},{"cell_type":"markdown","source":"### Convert from PCIAT-PCIAT_Total to sii format","metadata":{}},{"cell_type":"code","source":"preds = model.predict(df_test)\npreds = convert(preds)\npreds = np.array(preds).astype(int)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:48.853702Z","iopub.execute_input":"2024-12-19T18:06:48.854155Z","iopub.status.idle":"2024-12-19T18:06:48.869551Z","shell.execute_reply.started":"2024-12-19T18:06:48.854118Z","shell.execute_reply":"2024-12-19T18:06:48.868721Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Write the predictions to submission file","metadata":{}},{"cell_type":"code","source":"output = pd.DataFrame({'id': df_test.index,\n                       'sii': preds})\noutput.to_csv('submission.csv',index=False)\noutput","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-19T18:06:51.248567Z","iopub.execute_input":"2024-12-19T18:06:51.249029Z","iopub.status.idle":"2024-12-19T18:06:51.264749Z","shell.execute_reply.started":"2024-12-19T18:06:51.248991Z","shell.execute_reply":"2024-12-19T18:06:51.263448Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}