{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":112509,"databundleVersionId":14254895,"sourceType":"competition"}],"dockerImageVersionId":31153,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport cv2\nimport PIL\nimport matplotlib.pyplot as plt\nimport os\nimport seaborn as sns","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:57:10.865972Z","iopub.execute_input":"2025-11-01T11:57:10.866290Z","iopub.status.idle":"2025-11-01T11:57:11.947158Z","shell.execute_reply.started":"2025-11-01T11:57:10.866269Z","shell.execute_reply":"2025-11-01T11:57:11.946007Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data  = pd.read_csv('/kaggle/input/csiro-biomass/train.csv')\ntrain_data","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.604788Z","iopub.execute_input":"2025-11-01T11:00:35.605346Z","iopub.status.idle":"2025-11-01T11:00:35.716143Z","shell.execute_reply.started":"2025-11-01T11:00:35.605315Z","shell.execute_reply":"2025-11-01T11:00:35.715205Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_data = pd.read_csv('/kaggle/input/csiro-biomass/test.csv')\ntest_data","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.717076Z","iopub.execute_input":"2025-11-01T11:00:35.717332Z","iopub.status.idle":"2025-11-01T11:00:35.757675Z","shell.execute_reply.started":"2025-11-01T11:00:35.717309Z","shell.execute_reply":"2025-11-01T11:00:35.756679Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sample_submission = pd.read_csv('/kaggle/input/csiro-biomass/sample_submission.csv')\nsample_submission.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.760006Z","iopub.execute_input":"2025-11-01T11:00:35.760372Z","iopub.status.idle":"2025-11-01T11:00:35.797136Z","shell.execute_reply.started":"2025-11-01T11:00:35.760342Z","shell.execute_reply":"2025-11-01T11:00:35.796153Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.columns","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.798284Z","iopub.execute_input":"2025-11-01T11:00:35.798611Z","iopub.status.idle":"2025-11-01T11:00:35.807443Z","shell.execute_reply.started":"2025-11-01T11:00:35.798584Z","shell.execute_reply":"2025-11-01T11:00:35.806526Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data['Species'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.808900Z","iopub.execute_input":"2025-11-01T11:00:35.809310Z","iopub.status.idle":"2025-11-01T11:00:35.831069Z","shell.execute_reply.started":"2025-11-01T11:00:35.809280Z","shell.execute_reply":"2025-11-01T11:00:35.830050Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data['target_name'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.832168Z","iopub.execute_input":"2025-11-01T11:00:35.832490Z","iopub.status.idle":"2025-11-01T11:00:35.853949Z","shell.execute_reply.started":"2025-11-01T11:00:35.832454Z","shell.execute_reply":"2025-11-01T11:00:35.852980Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def plot_multiple_images_per_class(df, image_path_col, class_col, samples_per_class=3):\n  \n    classes = df[class_col].unique()\n    \n    # Create subplot grid\n    fig, axes = plt.subplots(len(classes), samples_per_class, \n                            figsize=(15, 5*len(classes)))\n    \n    # Handle single class case\n    if len(classes) == 1:\n        axes = axes.reshape(1, -1)\n    \n    for row, class_name in enumerate(classes):\n        # Get images for this class\n        class_images = df[df[class_col] == class_name][image_path_col].tolist()\n        \n        # Take first 'samples_per_class' images\n        selected_images = class_images[:samples_per_class]\n        \n        for col, img_path in enumerate(selected_images):\n            ax = axes[row, col] if len(classes) > 1 else axes[col]\n            \n            # Read and process image\n            if os.path.exists(img_path):\n                img = cv2.imread(img_path)\n                if img is not None:\n                    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n                    \n                    # Display image\n                    ax.imshow(img_rgb)\n                    ax.set_title(f'Class: {class_name}\\n{os.path.basename(img_path)}', \n                                fontsize=10, pad=5)\n                    ax.axis('off')\n                else:\n                    # Display placeholder if image couldn't be loaded\n                    ax.text(0.5, 0.5, 'Image\\nnot found', \n                           ha='center', va='center', transform=ax.transAxes,\n                           fontsize=12, color='red')\n                    ax.axis('off')\n            else:\n                # Display placeholder if file doesn't exist\n                ax.text(0.5, 0.5, 'File\\nnot found', \n                       ha='center', va='center', transform=ax.transAxes,\n                       fontsize=12, color='red')\n                ax.axis('off')\n    \n    plt.tight_layout()\n    plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.855058Z","iopub.execute_input":"2025-11-01T11:00:35.855471Z","iopub.status.idle":"2025-11-01T11:00:35.875154Z","shell.execute_reply.started":"2025-11-01T11:00:35.855434Z","shell.execute_reply":"2025-11-01T11:00:35.874089Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\nbase_dir = \"/kaggle/input/csiro-biomass\"\ntrain_data['full_image_path'] = train_data['image_path'].apply(lambda x: os.path.join(base_dir, x))\n\n\nplot_multiple_images_per_class(train_data, 'full_image_path', 'Species', samples_per_class=3)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:35.876145Z","iopub.execute_input":"2025-11-01T11:00:35.876426Z","iopub.status.idle":"2025-11-01T11:00:57.867569Z","shell.execute_reply.started":"2025-11-01T11:00:35.876399Z","shell.execute_reply":"2025-11-01T11:00:57.866566Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plot_multiple_images_per_class(train_data, 'full_image_path', 'target_name', samples_per_class=3)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:00:57.869489Z","iopub.execute_input":"2025-11-01T11:00:57.869800Z","iopub.status.idle":"2025-11-01T11:01:04.211968Z","shell.execute_reply.started":"2025-11-01T11:00:57.869766Z","shell.execute_reply":"2025-11-01T11:01:04.211009Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data['State'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:01:04.213150Z","iopub.execute_input":"2025-11-01T11:01:04.213421Z","iopub.status.idle":"2025-11-01T11:01:04.221331Z","shell.execute_reply.started":"2025-11-01T11:01:04.213399Z","shell.execute_reply":"2025-11-01T11:01:04.220109Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data['Sampling_Date'] = pd.to_datetime(train_data['Sampling_Date'])\ntrain_data['month'] = train_data['Sampling_Date'].dt.month\ntrain_data['day'] = train_data['Sampling_Date'].dt.day","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:03:45.821562Z","iopub.execute_input":"2025-11-01T11:03:45.821896Z","iopub.status.idle":"2025-11-01T11:03:45.841057Z","shell.execute_reply.started":"2025-11-01T11:03:45.821871Z","shell.execute_reply":"2025-11-01T11:03:45.840077Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def get_australian_season(month):\n    if month in [12, 1, 2]:\n        return 'Summer'\n    elif month in [3, 4, 5]:\n        return 'Autumn'\n    elif month in [6, 7, 8]:\n        return 'Winter'\n    else:\n        return 'Spring'\n\ntrain_data['season'] = train_data['month'].apply(get_australian_season)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:09:01.926226Z","iopub.execute_input":"2025-11-01T11:09:01.926594Z","iopub.status.idle":"2025-11-01T11:09:01.935079Z","shell.execute_reply.started":"2025-11-01T11:09:01.926566Z","shell.execute_reply":"2025-11-01T11:09:01.933843Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def get_detailed_season(state, month):\n    state = state.upper()\n    if state == 'TAS':\n        if month in [12, 1, 2]:\n            return 'Cool Summer'\n        elif month in [3, 4, 5]:\n            return 'Autumn'\n        elif month in [6, 7, 8]:\n            return 'Cold Winter'\n        else:  # 9, 10, 11\n            return 'Spring'\n    \n    elif state in ['QLD', 'NT']:  # Tropical states with wet/dry seasons\n        if month in [11, 12, 1, 2, 3, 4]:\n            return 'Wet Season'\n        else:  # 5, 6, 7, 8, 9, 10\n            return 'Dry Season'\n    \n    elif state == 'WA':  # WA has mixed climates, but mostly traditional seasons\n        if month in [12, 1, 2]:\n            return 'Summer'\n        elif month in [3, 4, 5]:\n            return 'Autumn'\n        elif month in [6, 7, 8]:\n            return 'Winter'\n        else:  # 9, 10, 11\n            return 'Spring'\n    \n    else:  # NSW, VIC, SA - traditional seasons\n        if month in [12, 1, 2]:\n            return 'Summer'\n        elif month in [3, 4, 5]:\n            return 'Autumn'\n        elif month in [6, 7, 8]:\n            return 'Winter'\n        else:  # 9, 10, 11\n            return 'Spring'\n\n# Apply the function correctly\ntrain_data['detailed_season'] = train_data[['State', 'month']].apply(\n    lambda x: get_detailed_season(x['State'], x['month']), axis=1\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:16:10.155073Z","iopub.execute_input":"2025-11-01T11:16:10.155471Z","iopub.status.idle":"2025-11-01T11:16:10.185871Z","shell.execute_reply.started":"2025-11-01T11:16:10.155440Z","shell.execute_reply":"2025-11-01T11:16:10.184443Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:16:10.352315Z","iopub.execute_input":"2025-11-01T11:16:10.352669Z","iopub.status.idle":"2025-11-01T11:16:10.376865Z","shell.execute_reply.started":"2025-11-01T11:16:10.352645Z","shell.execute_reply":"2025-11-01T11:16:10.374948Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data['season'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:16:13.280231Z","iopub.execute_input":"2025-11-01T11:16:13.280571Z","iopub.status.idle":"2025-11-01T11:16:13.292320Z","shell.execute_reply.started":"2025-11-01T11:16:13.280549Z","shell.execute_reply":"2025-11-01T11:16:13.291214Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data['detailed_season'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:16:13.426101Z","iopub.execute_input":"2025-11-01T11:16:13.426473Z","iopub.status.idle":"2025-11-01T11:16:13.439054Z","shell.execute_reply.started":"2025-11-01T11:16:13.426445Z","shell.execute_reply":"2025-11-01T11:16:13.437257Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"fig, ax = plt.subplots(1, 1, figsize = (16, 5))\n\nseason_counts = train_data['detailed_season'].value_counts()\n\n\nexplode = [0.1] * len(season_counts) \n\nax.pie(\n    season_counts,\n    explode=explode,\n    labels=season_counts.index,\n    autopct='%1.1f%%',\n    startangle=90,\n    shadow=True\n)\nax.set_title('Season Distribution')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:20:26.644593Z","iopub.execute_input":"2025-11-01T11:20:26.645625Z","iopub.status.idle":"2025-11-01T11:20:26.827278Z","shell.execute_reply.started":"2025-11-01T11:20:26.645586Z","shell.execute_reply":"2025-11-01T11:20:26.826067Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"fig, ax = plt.subplots(1, 1, figsize = (16, 5))\n\ntarget_counts = train_data['target_name'].value_counts()\n\n\nexplode = [0.1] * len(target_counts) \n\nax.pie(\n    target_counts,\n    explode=explode,\n    labels=target_counts.index,\n    autopct='%1.1f%%',\n    startangle=90,\n    shadow=True\n)\nax.set_title('Target name Distribution')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:24:18.056466Z","iopub.execute_input":"2025-11-01T11:24:18.057355Z","iopub.status.idle":"2025-11-01T11:24:18.224869Z","shell.execute_reply.started":"2025-11-01T11:24:18.057318Z","shell.execute_reply":"2025-11-01T11:24:18.223508Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"fig, ax = plt.subplots(1, 1, figsize = (16, 5))\n\nspecies_counts = train_data['Species'].value_counts()\n\n\nexplode = [0.1] * len(species_counts) \n\nax.pie(\n    species_counts,\n    explode=explode,\n    labels=species_counts.index,\n    autopct='%1.1f%%',\n    startangle=180,\n    shadow=True\n)\nax.set_title('Species Distribution')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:24:31.820978Z","iopub.execute_input":"2025-11-01T11:24:31.821345Z","iopub.status.idle":"2025-11-01T11:24:32.205078Z","shell.execute_reply.started":"2025-11-01T11:24:31.821313Z","shell.execute_reply":"2025-11-01T11:24:32.204038Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\n\nplt.figure(figsize=(12, 10))\ntrain_data.groupby('Species')['Height_Ave_cm'].mean().sort_values(ascending=False).plot(kind='bar')\nplt.title('Average Height by Grass Species')\nplt.xlabel('Grass Species')\nplt.ylabel('Average Height (cm)')\nplt.xticks(rotation=90)\nplt.tight_layout()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:27:14.403026Z","iopub.execute_input":"2025-11-01T11:27:14.403371Z","iopub.status.idle":"2025-11-01T11:27:14.767702Z","shell.execute_reply.started":"2025-11-01T11:27:14.403347Z","shell.execute_reply":"2025-11-01T11:27:14.766507Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\n\nplt.figure(figsize=(12, 10))\ntrain_data.groupby('target_name')['Height_Ave_cm'].mean().sort_values(ascending=False).plot(kind='bar')\nplt.title('Average Height by Biomasses')\nplt.xlabel('Biomasses')\nplt.ylabel('Average Height (cm)')\nplt.xticks(rotation=90)\nplt.tight_layout()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:53:30.998416Z","iopub.execute_input":"2025-11-01T11:53:30.998690Z","iopub.status.idle":"2025-11-01T11:53:31.240682Z","shell.execute_reply.started":"2025-11-01T11:53:30.998671Z","shell.execute_reply":"2025-11-01T11:53:31.239729Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\ncategory_col = 'Species'  \n\nplt.figure(figsize=(14, 6))\ngrouped_data = train_data.groupby(category_col)[['Pre_GSHH_NDVI', 'Height_Ave_cm']].mean()\n\nx = np.arange(len(grouped_data))\nwidth = 0.35\n\nfig, ax = plt.subplots(figsize=(14, 6))\nbars1 = ax.bar(x - width/2, grouped_data['Pre_GSHH_NDVI'], width, label='Pre_GSHH_NDVI', alpha=0.7)\nbars2 = ax.bar(x + width/2, grouped_data['Height_Ave_cm'], width, label='Height (cm)', alpha=0.7)\n\nax.set_xlabel(category_col)\nax.set_ylabel('Values')\nax.set_title(f'Pre_GSHH_NDVI and Height by {category_col}')\nax.set_xticks(x)\nax.set_xticklabels(grouped_data.index, rotation=45)\nax.legend()\nax.grid(axis='y', alpha=0.3)\n\nplt.tight_layout()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:55:08.314784Z","iopub.execute_input":"2025-11-01T11:55:08.315108Z","iopub.status.idle":"2025-11-01T11:55:08.672170Z","shell.execute_reply.started":"2025-11-01T11:55:08.315086Z","shell.execute_reply":"2025-11-01T11:55:08.671283Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))\n\n# Scatter plot\nax1.scatter(train_data['Pre_GSHH_NDVI'], train_data['Height_Ave_cm'], alpha=0.6)\nax1.set_xlabel('Pre_GSHH_NDVI')\nax1.set_ylabel('Height (cm)')\nax1.set_title('Pre_GSHH_NDVI vs Height Scatter Plot')\nax1.grid(alpha=0.3)\n\n# Bar plot\nmeans = [train_data['Pre_GSHH_NDVI'].mean(), train_data['Height_Ave_cm'].mean()]\nstds = [train_data['Pre_GSHH_NDVI'].std(), train_data['Height_Ave_cm'].std()]\n\nbars = ax2.bar(['Pre_GSHH_NDVI', 'Height (cm)'], means, \n               yerr=stds, capsize=5, alpha=0.7,\n               color=['lightgreen', 'lightblue'], edgecolor='black')\n\nax2.set_ylabel('Values')\nax2.set_title('Average Values with Standard Deviation')\nax2.grid(axis='y', alpha=0.3)\n\n# Add value labels\nfor bar, mean_val in zip(bars, means):\n    ax2.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.1, \n             f'{mean_val:.2f}', ha='center', va='bottom')\n\nplt.tight_layout()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:55:27.018814Z","iopub.execute_input":"2025-11-01T11:55:27.019135Z","iopub.status.idle":"2025-11-01T11:55:27.419341Z","shell.execute_reply.started":"2025-11-01T11:55:27.019112Z","shell.execute_reply":"2025-11-01T11:55:27.418343Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\ntrain_data['NDVI_bin'] = pd.cut(train_data['Pre_GSHH_NDVI'], bins=5)\n\nplt.figure(figsize=(10, 6))\nbin_heights = train_data.groupby('NDVI_bin')['Height_Ave_cm'].mean()\n\nbin_heights.plot(kind='bar', color='skyblue', alpha=0.7)\nplt.title('Average Height by NDVI Bins')\nplt.xlabel('Pre_GSHH_NDVI Bins')\nplt.ylabel('Average Height (cm)')\nplt.xticks(rotation=45)\nplt.grid(axis='y', alpha=0.3)\n\n# Add value labels\nfor i, v in enumerate(bin_heights):\n    plt.text(i, v + 0.5, f'{v:.1f}', ha='center', va='bottom')\n\nplt.tight_layout()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:55:48.785591Z","iopub.execute_input":"2025-11-01T11:55:48.785995Z","iopub.status.idle":"2025-11-01T11:55:49.039322Z","shell.execute_reply.started":"2025-11-01T11:55:48.785969Z","shell.execute_reply":"2025-11-01T11:55:49.038440Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\ncorrelation = train_data['Height_Ave_cm'].corr(train_data['Pre_GSHH_NDVI'])\nprint(f\"Correlation between Height and NDVI: {correlation:.3f}\")\n\nplt.figure(figsize=(10, 6))\nsns.regplot(data=train_data, x='Height_Ave_cm', y='Pre_GSHH_NDVI', \n            scatter_kws={'alpha':0.6}, line_kws={'color':'red'})\nplt.title(f'Height vs NDVI (Correlation: {correlation:.3f})')\nplt.xlabel('Height (cm)')\nplt.ylabel('Pre_GSHH_NDVI')\nplt.grid(alpha=0.3)\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:57:15.273936Z","iopub.execute_input":"2025-11-01T11:57:15.274448Z","iopub.status.idle":"2025-11-01T11:57:15.727948Z","shell.execute_reply.started":"2025-11-01T11:57:15.274423Z","shell.execute_reply":"2025-11-01T11:57:15.727063Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.figure(figsize=(12, 6))\nsns.scatterplot(data=train_data, x='Height_Ave_cm', y='Pre_GSHH_NDVI', hue='Species')\nplt.title('Height vs NDVI by Grass Species')\nplt.xlabel('Height (cm)')\nplt.ylabel('Pre_GSHH_NDVI')\nplt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')\nplt.grid(alpha=0.3)\nplt.tight_layout()\nplt.show()\n\n# Correlation by species\nspecies_corr = train_data.groupby('Species').apply(\n    lambda x: x['Height_Ave_cm'].corr(x['Pre_GSHH_NDVI'])\n)\nprint(\"\\nCorrelation by species:\")\nprint(species_corr.round(3))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-01T11:57:52.387186Z","iopub.execute_input":"2025-11-01T11:57:52.387505Z","iopub.status.idle":"2025-11-01T11:57:53.152610Z","shell.execute_reply.started":"2025-11-01T11:57:52.387483Z","shell.execute_reply":"2025-11-01T11:57:53.151623Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}