{"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":"gpu","dataSources":[{"sourceId":112509,"databundleVersionId":14254895,"isSourceIdPinned":false,"sourceType":"competition"},{"sourceId":650551,"sourceType":"modelInstanceVersion","isSourceIdPinned":true,"modelInstanceId":490883,"modelId":506310}],"dockerImageVersionId":31153,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd \nimport matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\nimport seaborn as sns\nfrom PIL import Image\nimport os \nimport tensorflow as tf\nfrom tensorflow.keras import layers, models","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:25.745058Z","iopub.execute_input":"2025-11-18T18:52:25.745805Z","iopub.status.idle":"2025-11-18T18:52:25.750712Z","shell.execute_reply.started":"2025-11-18T18:52:25.745778Z","shell.execute_reply":"2025-11-18T18:52:25.749961Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_csv=pd.read_csv(r\"/kaggle/input/csiro-biomass/train.csv\")\ntest_csv=pd.read_csv(r'/kaggle/input/csiro-biomass/test.csv')\nprint(f\"Train data :\\n{train_csv.head()}\")\nprint(f\"\\nTest data :\\n{test_csv.head()}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:29.888375Z","iopub.execute_input":"2025-11-18T18:52:29.888898Z","iopub.status.idle":"2025-11-18T18:52:29.908915Z","shell.execute_reply.started":"2025-11-18T18:52:29.888879Z","shell.execute_reply":"2025-11-18T18:52:29.908182Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## Understanding data ","metadata":{}},{"cell_type":"code","source":"# fig=px.bar(train_csv.Species.value_counts(),title=\"count species\")\n# fig.show()\ntrain_csv.Species.value_counts().sort_values().plot(kind=\"barh\",title='count species',color=\"orange\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:29.909933Z","iopub.execute_input":"2025-11-18T18:52:29.910318Z","iopub.status.idle":"2025-11-18T18:52:30.108531Z","shell.execute_reply.started":"2025-11-18T18:52:29.910291Z","shell.execute_reply":"2025-11-18T18:52:30.107777Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"**Species with name Ryegrass (less than rygrass_cover), Rygrass_cover is highly present**\n","metadata":{}},{"cell_type":"code","source":"img_path=\"/kaggle/input/csiro-biomass/\"\nunique_img_path=train_csv.image_path.unique().tolist()\nnum_images=6\n\nselected_images = unique_img_path[:num_images]\n\nrows = (num_images + 1) // 2\ncols = 2\nfig, axes = plt.subplots(rows, cols, figsize=(10, rows * 4))\naxes = axes.flatten()\nfor ax, img_name in zip(axes, selected_images):\n    path = os.path.join(img_path, img_name)\n    img = mpimg.imread(path)\n    ax.imshow(img)\n    ax.set_title(f\"Name: {img_name}\", fontsize=10)\n    ax.axis(\"off\")\nfor ax in axes[len(selected_images):]:\n    ax.axis(\"off\")\nplt.suptitle(\"Sample Images from CSIRO Biomass Dataset\", fontsize=16, fontweight='bold', y=1.02)\nplt.tight_layout()\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:30.110294Z","iopub.execute_input":"2025-11-18T18:52:30.110711Z","iopub.status.idle":"2025-11-18T18:52:32.011030Z","shell.execute_reply.started":"2025-11-18T18:52:30.110694Z","shell.execute_reply":"2025-11-18T18:52:32.009621Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_csv.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.011857Z","iopub.execute_input":"2025-11-18T18:52:32.012078Z","iopub.status.idle":"2025-11-18T18:52:32.023304Z","shell.execute_reply.started":"2025-11-18T18:52:32.012061Z","shell.execute_reply":"2025-11-18T18:52:32.022414Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_csv.State.value_counts().plot(kind=\"barh\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.024260Z","iopub.execute_input":"2025-11-18T18:52:32.024453Z","iopub.status.idle":"2025-11-18T18:52:32.145706Z","shell.execute_reply.started":"2025-11-18T18:52:32.024438Z","shell.execute_reply":"2025-11-18T18:52:32.144977Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_csv.target_name.value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.146336Z","iopub.execute_input":"2025-11-18T18:52:32.146513Z","iopub.status.idle":"2025-11-18T18:52:32.152642Z","shell.execute_reply.started":"2025-11-18T18:52:32.146500Z","shell.execute_reply":"2025-11-18T18:52:32.152091Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_csv.target.plot(color=\"orange\")\nplt.plot()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.153274Z","iopub.execute_input":"2025-11-18T18:52:32.153503Z","iopub.status.idle":"2025-11-18T18:52:32.319889Z","shell.execute_reply.started":"2025-11-18T18:52:32.153483Z","shell.execute_reply":"2025-11-18T18:52:32.319191Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_test=train_csv.drop(columns=[\"Sampling_Date\",\"State\",\"Species\",\"Pre_GSHH_NDVI\",\"Height_Ave_cm\"])\ntrain_test.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.320628Z","iopub.execute_input":"2025-11-18T18:52:32.320872Z","iopub.status.idle":"2025-11-18T18:52:32.329666Z","shell.execute_reply.started":"2025-11-18T18:52:32.320847Z","shell.execute_reply":"2025-11-18T18:52:32.328941Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_test.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.332187Z","iopub.execute_input":"2025-11-18T18:52:32.332707Z","iopub.status.idle":"2025-11-18T18:52:32.344183Z","shell.execute_reply.started":"2025-11-18T18:52:32.332689Z","shell.execute_reply":"2025-11-18T18:52:32.343621Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pivoted = train_test.pivot_table(index=\"image_path\", columns=\"target_name\", values=\"target\").reset_index()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.345012Z","iopub.execute_input":"2025-11-18T18:52:32.345716Z","iopub.status.idle":"2025-11-18T18:52:32.363747Z","shell.execute_reply.started":"2025-11-18T18:52:32.345694Z","shell.execute_reply":"2025-11-18T18:52:32.363137Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"target_cols = pivoted.columns[1:]\ntarget_cols","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.364482Z","iopub.execute_input":"2025-11-18T18:52:32.364685Z","iopub.status.idle":"2025-11-18T18:52:32.370890Z","shell.execute_reply.started":"2025-11-18T18:52:32.364671Z","shell.execute_reply":"2025-11-18T18:52:32.370299Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pivoted","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.371678Z","iopub.execute_input":"2025-11-18T18:52:32.372282Z","iopub.status.idle":"2025-11-18T18:52:32.391065Z","shell.execute_reply.started":"2025-11-18T18:52:32.372258Z","shell.execute_reply":"2025-11-18T18:52:32.390476Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\ntrain_df,test_df=train_test_split(pivoted,random_state=42,test_size=0.2)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.391731Z","iopub.execute_input":"2025-11-18T18:52:32.391979Z","iopub.status.idle":"2025-11-18T18:52:32.405057Z","shell.execute_reply.started":"2025-11-18T18:52:32.391964Z","shell.execute_reply":"2025-11-18T18:52:32.403879Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_df","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.405841Z","iopub.execute_input":"2025-11-18T18:52:32.406688Z","iopub.status.idle":"2025-11-18T18:52:32.423094Z","shell.execute_reply.started":"2025-11-18T18:52:32.406667Z","shell.execute_reply":"2025-11-18T18:52:32.422381Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import numpy as np\ntrain_data=[]\ntest_data=[]\nfor i in train_df.image_path:\n    image=Image.open(img_path + i)\n    image=image.resize((128,128))\n    image=image.convert(\"RGB\")\n    image=np.array(image)\n    train_data.append(image)\nfor i in test_df.image_path:\n    image=Image.open(img_path + i)\n    image=image.resize((128,128))\n    image=image.convert(\"RGB\")\n    image=np.array(image)\n    test_data.append(image)    \nx_train=np.array(train_data)\nx_test=np.array(test_data)\n    \n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:32.423899Z","iopub.execute_input":"2025-11-18T18:52:32.424309Z","iopub.status.idle":"2025-11-18T18:52:51.772569Z","shell.execute_reply.started":"2025-11-18T18:52:32.424293Z","shell.execute_reply":"2025-11-18T18:52:51.771835Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"y_train = train_df[target_cols].values\ny_test = test_df[target_cols].values\n\nprint(\"Train shape:\", x_train.shape)\nprint(\"Test shape:\", x_test.shape)\nprint(\"Targets:\", target_cols)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:51.773257Z","iopub.execute_input":"2025-11-18T18:52:51.773435Z","iopub.status.idle":"2025-11-18T18:52:51.779281Z","shell.execute_reply.started":"2025-11-18T18:52:51.773422Z","shell.execute_reply":"2025-11-18T18:52:51.778602Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def random_invert_img(x, factor=0.5):\n    return tf.where(\n        tf.random.uniform(shape=[1]) < factor,\n        255 - x,\n        x\n    )\ndef random_invert(factor=0.5):\n    return layers.Lambda(lambda x: random_invert_img(x, factor))\nrandom_invert_layer = random_invert()\n\ndef augment_images(images):\n    augmented = []\n    for img in images:\n        img_tensor = tf.image.random_flip_left_right(img)\n        # img_tensor=random_invert_layer(img_tensor)\n        img_tensor=tf.image.rot90(img_tensor)\n        augmented.append(img_tensor.numpy().astype(\"uint8\"))\n    return np.array(augmented)\n\nx_train = augment_images(x_train)\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:51.780168Z","iopub.execute_input":"2025-11-18T18:52:51.780797Z","iopub.status.idle":"2025-11-18T18:52:52.881353Z","shell.execute_reply.started":"2025-11-18T18:52:51.780772Z","shell.execute_reply":"2025-11-18T18:52:52.880763Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"x_train.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:52.882080Z","iopub.execute_input":"2025-11-18T18:52:52.882316Z","iopub.status.idle":"2025-11-18T18:52:52.887271Z","shell.execute_reply.started":"2025-11-18T18:52:52.882295Z","shell.execute_reply":"2025-11-18T18:52:52.886705Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# def random_invert_img(x, factor=0.5):\n#     return tf.where(\n#         tf.random.uniform(shape=[1]) < factor,\n#         255 - x,\n#         x\n#     )\n\n# def random_invert(factor=0.5):\n#     return layers.Lambda(lambda x: random_invert_img(x, factor))\n\n# random_invert_layer = random_invert()\n\n# # Add batch dimension\n# img = x_train[10]\n# # img = tf.expand_dims(img, axis=0)   # shape becomes (1, 28, 28, 1)\n\n# # Apply the layer\n# img_inv = random_invert_layer(img)\n\n# # Remove batch dimension before visualization\n# # plt.imshow(img_inv[0].numpy().astype(\"uint8\"), cmap=\"gray\")\n# plt.imshow(img_inv.numpy().astype(\"uint8\"))\n# plt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:52.887963Z","iopub.execute_input":"2025-11-18T18:52:52.888169Z","iopub.status.idle":"2025-11-18T18:52:52.900826Z","shell.execute_reply.started":"2025-11-18T18:52:52.888155Z","shell.execute_reply":"2025-11-18T18:52:52.900157Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.imshow(x_train[10].astype(\"uint8\"))\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:52.901494Z","iopub.execute_input":"2025-11-18T18:52:52.902109Z","iopub.status.idle":"2025-11-18T18:52:53.110532Z","shell.execute_reply.started":"2025-11-18T18:52:52.902086Z","shell.execute_reply":"2025-11-18T18:52:53.109767Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#img=tf.image.random_flip_left_right(x_train[90])\n# img=tf.image.random_brightness(img, max_delta=0.1)\n# img=tf.image.random_contrast(img, 0.8, 1.2)\n# img=tf.image.random_hue(img,0.4)\n# img=tf.image.random_jpeg_quality(img,67,70)\n# img=tf.image.random_saturation(img,0.5, 1.0)\n#plt.imshow(img)\n# plt.imshow(x_train[1])\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:53.111387Z","iopub.execute_input":"2025-11-18T18:52:53.111667Z","iopub.status.idle":"2025-11-18T18:52:53.115600Z","shell.execute_reply.started":"2025-11-18T18:52:53.111650Z","shell.execute_reply":"2025-11-18T18:52:53.114816Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras import layers, models\nmodel = models.Sequential([\n    layers.Input(shape=(128,128,3)),\n    layers.Conv2D(16, (3,3), activation='relu'),\n    layers.MaxPooling2D(pool_size=(2,2),padding=\"same\"),\n    layers.Conv2D(32, (3,3), activation='relu'),\n    layers.MaxPooling2D(pool_size=(2,2),padding=\"same\"),\n    layers.Conv2D(64, (3,3), activation='relu'),\n    layers.MaxPooling2D(pool_size=(2,2),padding=\"same\"),\n    layers.Flatten(),\n    layers.Dense(128, activation='relu'),\n    layers.Dropout(0.3),\n    layers.Dense(len(target_cols), activation='linear')  # regression output\n])\ncallback = keras.callbacks.EarlyStopping(monitor='val_rmse',\n                                         patience=3,restore_best_weights=True,\n                                           mode='min')\nlr_reduce = tf.keras.callbacks.ReduceLROnPlateau(\n    monitor='val_rmse', \n    factor=0.5, \n    patience=3, \n    mode='min', \n    verbose=1\n)\nimport tensorflow.keras.backend as K\n\ndef r2_metric(y_true, y_pred):\n    ss_res = K.sum(K.square(y_true - y_pred))\n    ss_tot = K.sum(K.square(y_true - K.mean(y_true)))\n    return (1 - ss_res/(ss_tot + K.epsilon()))\n\nmodel.compile(\n    optimizer=tf.keras.optimizers.Adam(1e-5),\n    loss='mse',\n    metrics=[tf.keras.metrics.RootMeanSquaredError(name='rmse'), r2_metric]\n)\n\nhistory=model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=100,callbacks=[callback,lr_reduce],batch_size=16)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:52:53.116457Z","iopub.execute_input":"2025-11-18T18:52:53.116692Z","iopub.status.idle":"2025-11-18T18:53:04.045105Z","shell.execute_reply.started":"2025-11-18T18:52:53.116668Z","shell.execute_reply":"2025-11-18T18:53:04.044529Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.summary()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.045934Z","iopub.execute_input":"2025-11-18T18:53:04.046170Z","iopub.status.idle":"2025-11-18T18:53:04.065308Z","shell.execute_reply.started":"2025-11-18T18:53:04.046145Z","shell.execute_reply":"2025-11-18T18:53:04.064700Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_csv.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.066049Z","iopub.execute_input":"2025-11-18T18:53:04.066323Z","iopub.status.idle":"2025-11-18T18:53:04.074185Z","shell.execute_reply.started":"2025-11-18T18:53:04.066302Z","shell.execute_reply":"2025-11-18T18:53:04.073367Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"len(test_csv)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.074873Z","iopub.execute_input":"2025-11-18T18:53:04.075046Z","iopub.status.idle":"2025-11-18T18:53:04.088960Z","shell.execute_reply.started":"2025-11-18T18:53:04.075032Z","shell.execute_reply":"2025-11-18T18:53:04.088391Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# test_pivoted = test_csv.pivot_table(index=\"image_path\", columns=\"target_name\", values=\"target\").reset_index()\ntest_t_data=[]\n\nfor i in test_csv.image_path:\n    image=Image.open(img_path + i)\n    image=image.resize((128,128))\n    image=image.convert(\"RGB\")\n    image=np.array(image)\n    test_t_data.append(image)\ntest_t_data=np.array(test_t_data)\nprint(\"\\n lenght of test data :\",len(test_t_data))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.089724Z","iopub.execute_input":"2025-11-18T18:53:04.090006Z","iopub.status.idle":"2025-11-18T18:53:04.391622Z","shell.execute_reply.started":"2025-11-18T18:53:04.089991Z","shell.execute_reply":"2025-11-18T18:53:04.390765Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_csv.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.395055Z","iopub.execute_input":"2025-11-18T18:53:04.395278Z","iopub.status.idle":"2025-11-18T18:53:04.402918Z","shell.execute_reply.started":"2025-11-18T18:53:04.395260Z","shell.execute_reply":"2025-11-18T18:53:04.402279Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"preds = model.predict(test_t_data, batch_size=16)\npred_df = pd.DataFrame(preds, columns=target_cols)\nresult_df = pd.concat([test_csv[\"image_path\"], pred_df], axis=1)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.403653Z","iopub.execute_input":"2025-11-18T18:53:04.403962Z","iopub.status.idle":"2025-11-18T18:53:04.926439Z","shell.execute_reply.started":"2025-11-18T18:53:04.403936Z","shell.execute_reply":"2025-11-18T18:53:04.925896Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"melted = result_df.melt(\n    id_vars=['image_path'],\n    value_vars=target_cols,\n    var_name='target_name',\n    value_name='target'\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.927142Z","iopub.execute_input":"2025-11-18T18:53:04.927367Z","iopub.status.idle":"2025-11-18T18:53:04.934295Z","shell.execute_reply.started":"2025-11-18T18:53:04.927351Z","shell.execute_reply":"2025-11-18T18:53:04.933527Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"melted.drop_duplicates(inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.935074Z","iopub.execute_input":"2025-11-18T18:53:04.935312Z","iopub.status.idle":"2025-11-18T18:53:04.949022Z","shell.execute_reply.started":"2025-11-18T18:53:04.935292Z","shell.execute_reply":"2025-11-18T18:53:04.948389Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"melted['sample_id'] = (\n    melted['image_path'].str.extract(r'(ID\\d+)')[0] + '__' + melted['target_name']\n)\nmelted","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.949858Z","iopub.execute_input":"2025-11-18T18:53:04.950161Z","iopub.status.idle":"2025-11-18T18:53:04.968186Z","shell.execute_reply.started":"2025-11-18T18:53:04.950145Z","shell.execute_reply":"2025-11-18T18:53:04.967423Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"result_df.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.968962Z","iopub.execute_input":"2025-11-18T18:53:04.969676Z","iopub.status.idle":"2025-11-18T18:53:04.985879Z","shell.execute_reply.started":"2025-11-18T18:53:04.969654Z","shell.execute_reply":"2025-11-18T18:53:04.985272Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"submission = melted.copy()\n\nsubmission=submission[[\"sample_id\",\"target\"]]\nsubmission.to_csv(\"submission.csv\",index=False)\nsubmission.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:04.986475Z","iopub.execute_input":"2025-11-18T18:53:04.986710Z","iopub.status.idle":"2025-11-18T18:53:05.005786Z","shell.execute_reply.started":"2025-11-18T18:53:04.986691Z","shell.execute_reply":"2025-11-18T18:53:05.005045Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!ls -lh submission.csv\n!head submission.csv","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-11-18T18:53:05.006889Z","iopub.execute_input":"2025-11-18T18:53:05.007114Z","iopub.status.idle":"2025-11-18T18:53:05.408895Z","shell.execute_reply.started":"2025-11-18T18:53:05.007099Z","shell.execute_reply":"2025-11-18T18:53:05.408102Z"}},"outputs":[],"execution_count":null}]}