{"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":"<h2><center>  MNIST ","metadata":{}},{"cell_type":"markdown","source":"<h3>Description:</h3>\n\nThe provided description explains that the dataset consists of images of hand-drawn digits, where each image is a 28x28 matrix of pixel values. Here's a more concise summary of the information**:\n\n- **Dataset**: train.csv and test.csv\n- **Image Format**: Gray-scale images of hand-drawn digits (0 through 9)\n- **Image Size**: 28 pixels in height and 28 pixels in width, totaling 784 pixels\n- **Pixel Values**: Each pixel has an integer value between 0 and 255 (indicating lightness/darkness)\n- **Training Data Columns**: 785 columns in total<br>\n&ensp; Column 1: \"label\" (digit drawn by the user)<br>\n&ensp; Columns 2 to 785: pixel values of the associated image\n- **Pixel Column Names**: pixel0, pixel1, ..., pixel783\n- **Pixel Location**: pixel x is located at row i and column j of a 28x28 matrix, where x = i * 28 + j","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"###  Importing Packages","metadata":{}},{"cell_type":"code","source":"# import libraries\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as pt\n\n# ML libraries\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import classification_report, confusion_matrix\n\n# Deep libraries \nimport tensorflow as tf\nfrom tensorflow import keras\nfrom keras import layers\nfrom keras.models import Sequential\n\n# Inbuilt\nimport warnings\nwarnings.filterwarnings(\"ignore\")","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:05.025282Z","iopub.execute_input":"2023-08-22T05:01:05.025666Z","iopub.status.idle":"2023-08-22T05:01:05.032483Z","shell.execute_reply.started":"2023-08-22T05:01:05.025635Z","shell.execute_reply":"2023-08-22T05:01:05.031272Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 1. Loading Data","metadata":{}},{"cell_type":"markdown","source":"#### Train Data :","metadata":{}},{"cell_type":"code","source":"train_data=pd.read_csv(\"/kaggle/input/digit-recognizer/train.csv\")\ntrain_data.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:05.054659Z","iopub.execute_input":"2023-08-22T05:01:05.054920Z","iopub.status.idle":"2023-08-22T05:01:09.020429Z","shell.execute_reply.started":"2023-08-22T05:01:05.054896Z","shell.execute_reply":"2023-08-22T05:01:09.019417Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.info()","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:09.022835Z","iopub.execute_input":"2023-08-22T05:01:09.023889Z","iopub.status.idle":"2023-08-22T05:01:09.062581Z","shell.execute_reply.started":"2023-08-22T05:01:09.023848Z","shell.execute_reply":"2023-08-22T05:01:09.061585Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data.columns","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:09.063824Z","iopub.execute_input":"2023-08-22T05:01:09.064127Z","iopub.status.idle":"2023-08-22T05:01:09.074320Z","shell.execute_reply.started":"2023-08-22T05:01:09.064095Z","shell.execute_reply":"2023-08-22T05:01:09.073413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xset=train_data.drop([\"label\"],axis=1)\nxset","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:09.077742Z","iopub.execute_input":"2023-08-22T05:01:09.078120Z","iopub.status.idle":"2023-08-22T05:01:09.395640Z","shell.execute_reply.started":"2023-08-22T05:01:09.078080Z","shell.execute_reply":"2023-08-22T05:01:09.394670Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"yset=train_data[\"label\"]\nyset","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:09.397206Z","iopub.execute_input":"2023-08-22T05:01:09.397566Z","iopub.status.idle":"2023-08-22T05:01:09.404873Z","shell.execute_reply.started":"2023-08-22T05:01:09.397522Z","shell.execute_reply":"2023-08-22T05:01:09.403914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Test Data :","metadata":{}},{"cell_type":"code","source":"test_data=pd.read_csv(\"/kaggle/input/digit-recognizer/test.csv\")\ntest_data.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:09.406384Z","iopub.execute_input":"2023-08-22T05:01:09.407070Z","iopub.status.idle":"2023-08-22T05:01:12.053875Z","shell.execute_reply.started":"2023-08-22T05:01:09.407037Z","shell.execute_reply":"2023-08-22T05:01:12.051556Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data.info()","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.056887Z","iopub.execute_input":"2023-08-22T05:01:12.057721Z","iopub.status.idle":"2023-08-22T05:01:12.110200Z","shell.execute_reply.started":"2023-08-22T05:01:12.057684Z","shell.execute_reply":"2023-08-22T05:01:12.109198Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data.columns","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.112450Z","iopub.execute_input":"2023-08-22T05:01:12.113166Z","iopub.status.idle":"2023-08-22T05:01:12.122195Z","shell.execute_reply.started":"2023-08-22T05:01:12.113131Z","shell.execute_reply":"2023-08-22T05:01:12.121273Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 2.Splitting of Data","metadata":{}},{"cell_type":"code","source":"# Creating Data splits \nxtrain,xtest,ytrain,ytest=train_test_split(xset,yset,test_size=0.3,random_state=69)","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.123787Z","iopub.execute_input":"2023-08-22T05:01:12.124439Z","iopub.status.idle":"2023-08-22T05:01:12.517771Z","shell.execute_reply.started":"2023-08-22T05:01:12.124386Z","shell.execute_reply":"2023-08-22T05:01:12.516752Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xtrain.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.523354Z","iopub.execute_input":"2023-08-22T05:01:12.523667Z","iopub.status.idle":"2023-08-22T05:01:12.529666Z","shell.execute_reply.started":"2023-08-22T05:01:12.523640Z","shell.execute_reply":"2023-08-22T05:01:12.528661Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xtest.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.531232Z","iopub.execute_input":"2023-08-22T05:01:12.531895Z","iopub.status.idle":"2023-08-22T05:01:12.541272Z","shell.execute_reply.started":"2023-08-22T05:01:12.531862Z","shell.execute_reply":"2023-08-22T05:01:12.540137Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ytrain.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.542938Z","iopub.execute_input":"2023-08-22T05:01:12.543264Z","iopub.status.idle":"2023-08-22T05:01:12.553593Z","shell.execute_reply.started":"2023-08-22T05:01:12.543234Z","shell.execute_reply":"2023-08-22T05:01:12.552721Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ytest.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.555098Z","iopub.execute_input":"2023-08-22T05:01:12.555722Z","iopub.status.idle":"2023-08-22T05:01:12.564477Z","shell.execute_reply.started":"2023-08-22T05:01:12.555691Z","shell.execute_reply":"2023-08-22T05:01:12.563525Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Validation Data :","metadata":{}},{"cell_type":"code","source":"# Splitting data on xtrain \nsplit=0.20\nsamples=int(len(xtrain)*split)\nsamples","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.565871Z","iopub.execute_input":"2023-08-22T05:01:12.566407Z","iopub.status.idle":"2023-08-22T05:01:12.576177Z","shell.execute_reply.started":"2023-08-22T05:01:12.566375Z","shell.execute_reply":"2023-08-22T05:01:12.575173Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xval=xtrain[:samples]\nyval=ytrain[:samples]\nxval.shape,yval.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.577731Z","iopub.execute_input":"2023-08-22T05:01:12.578341Z","iopub.status.idle":"2023-08-22T05:01:12.592834Z","shell.execute_reply.started":"2023-08-22T05:01:12.578308Z","shell.execute_reply":"2023-08-22T05:01:12.591880Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xtrain=xtrain[samples:]\nytrain=ytrain[samples:]\nxtrain.shape,ytrain.shape","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.594211Z","iopub.execute_input":"2023-08-22T05:01:12.594585Z","iopub.status.idle":"2023-08-22T05:01:12.603711Z","shell.execute_reply.started":"2023-08-22T05:01:12.594554Z","shell.execute_reply":"2023-08-22T05:01:12.602672Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3. Reshape & Normalize ","metadata":{}},{"cell_type":"code","source":"# Reshape the arrays\nxtrain = xtrain.to_numpy()\nxtest = xtest.to_numpy()\nxval=xval.to_numpy()\n\nxtrain = xtrain.reshape((-1, 28, 28, 1))\nxtest = xtest.reshape((-1, 28, 28, 1))\nxval=xval.reshape((-1, 28, 28, 1))\n","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.605173Z","iopub.execute_input":"2023-08-22T05:01:12.605572Z","iopub.status.idle":"2023-08-22T05:01:12.614401Z","shell.execute_reply.started":"2023-08-22T05:01:12.605539Z","shell.execute_reply":"2023-08-22T05:01:12.613542Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# normalize : normalizng pixel values to 0 & 1\nxtrain=xtrain/255.0\nxtest=xtest/255.0\nxval=xval/255.0","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.617370Z","iopub.execute_input":"2023-08-22T05:01:12.617636Z","iopub.status.idle":"2023-08-22T05:01:12.778768Z","shell.execute_reply.started":"2023-08-22T05:01:12.617612Z","shell.execute_reply":"2023-08-22T05:01:12.777700Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 4.Model Framing","metadata":{}},{"cell_type":"code","source":"tf.random.set_seed(69)","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.780403Z","iopub.execute_input":"2023-08-22T05:01:12.781124Z","iopub.status.idle":"2023-08-22T05:01:12.874516Z","shell.execute_reply.started":"2023-08-22T05:01:12.781087Z","shell.execute_reply":"2023-08-22T05:01:12.873376Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Creating a  network\nmodel=keras.Sequential([\n    layers.Conv2D(64,(3,3),activation=\"relu\",input_shape=(28,28,1)),  #32 is a filter.common choice are 16*i\n    layers.MaxPool2D(2,2),\n    layers.Conv2D(32,(3,3),activation=\"relu\",input_shape=(28,28,1)),  #32 is a filter.common choice are 16*i\n    layers.MaxPool2D(2,2),\n    layers.Flatten(),\n    layers.Dropout(0.5),\n    layers.Dense(units=250,activation=\"relu\"),\n    layers.Dropout(0.1),\n    layers.Dense(units=150,activation=\"relu\"),\n\n    layers.Dense(units=60,activation=\"relu\"),\n    layers.Dense(units=10,activation=\"softmax\")\n])","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:12.878048Z","iopub.execute_input":"2023-08-22T05:01:12.878359Z","iopub.status.idle":"2023-08-22T05:01:13.135297Z","shell.execute_reply.started":"2023-08-22T05:01:12.878333Z","shell.execute_reply":"2023-08-22T05:01:13.134347Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:13.136567Z","iopub.execute_input":"2023-08-22T05:01:13.136894Z","iopub.status.idle":"2023-08-22T05:01:13.168699Z","shell.execute_reply.started":"2023-08-22T05:01:13.136861Z","shell.execute_reply":"2023-08-22T05:01:13.167961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Configuring model\nmodel.compile(optimizer=\"adam\",loss=\"sparse_categorical_crossentropy\",metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:13.169644Z","iopub.execute_input":"2023-08-22T05:01:13.169953Z","iopub.status.idle":"2023-08-22T05:01:13.191977Z","shell.execute_reply.started":"2023-08-22T05:01:13.169922Z","shell.execute_reply":"2023-08-22T05:01:13.191070Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.callbacks import EarlyStopping\nearly=EarlyStopping(min_delta=0.01,patience=10,restore_best_weights=True)","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:13.193832Z","iopub.execute_input":"2023-08-22T05:01:13.194611Z","iopub.status.idle":"2023-08-22T05:01:13.199309Z","shell.execute_reply.started":"2023-08-22T05:01:13.194508Z","shell.execute_reply":"2023-08-22T05:01:13.198430Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Model fit\nhist=model.fit(xtrain,ytrain,epochs=40,verbose=1,batch_size=256,validation_data=(xval,yval),callbacks=[early])\nhist","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:13.200811Z","iopub.execute_input":"2023-08-22T05:01:13.201412Z","iopub.status.idle":"2023-08-22T05:01:37.229537Z","shell.execute_reply.started":"2023-08-22T05:01:13.201379Z","shell.execute_reply":"2023-08-22T05:01:37.228484Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Creating dataframe for hist\nfinal=pd.DataFrame(hist.history)\nfinal","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:37.231117Z","iopub.execute_input":"2023-08-22T05:01:37.231428Z","iopub.status.idle":"2023-08-22T05:01:37.252450Z","shell.execute_reply.started":"2023-08-22T05:01:37.231401Z","shell.execute_reply":"2023-08-22T05:01:37.251536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"Final Accuracy\",final[\"accuracy\"].iloc[-1])\nprint(\"Final Val_Accuracy\",final[\"val_accuracy\"].iloc[-1])","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:37.254165Z","iopub.execute_input":"2023-08-22T05:01:37.254796Z","iopub.status.idle":"2023-08-22T05:01:37.261013Z","shell.execute_reply.started":"2023-08-22T05:01:37.254762Z","shell.execute_reply":"2023-08-22T05:01:37.259986Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Plotting for val and val_loss\nfinal[[\"loss\",\"val_loss\"]].plot()","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:37.262614Z","iopub.execute_input":"2023-08-22T05:01:37.263352Z","iopub.status.idle":"2023-08-22T05:01:55.715445Z","shell.execute_reply.started":"2023-08-22T05:01:37.263317Z","shell.execute_reply":"2023-08-22T05:01:55.714489Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Plotting for accuraccy and val_accuracy\nfinal[[\"accuracy\",\"val_accuracy\"]].plot()","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:55.720876Z","iopub.execute_input":"2023-08-22T05:01:55.721700Z","iopub.status.idle":"2023-08-22T05:01:56.026370Z","shell.execute_reply.started":"2023-08-22T05:01:55.721663Z","shell.execute_reply":"2023-08-22T05:01:56.025441Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 5.Evaluation","metadata":{}},{"cell_type":"code","source":"# Evaluation on splitted test set.\n\ntest_loss,test_accuracy=model.evaluate(xtest,ytest,verbose=3)\nprint(\"Test loss :\",test_loss)\nprint(\"Test accuracy: \",test_accuracy*100)","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:56.027942Z","iopub.execute_input":"2023-08-22T05:01:56.028318Z","iopub.status.idle":"2023-08-22T05:01:57.153783Z","shell.execute_reply.started":"2023-08-22T05:01:56.028280Z","shell.execute_reply":"2023-08-22T05:01:57.152809Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Error analysis\n\npredictions = model.predict(xtest).argmax(axis=1)\nprint(\"predictions:\",predictions)","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:57.155142Z","iopub.execute_input":"2023-08-22T05:01:57.155491Z","iopub.status.idle":"2023-08-22T05:01:58.334538Z","shell.execute_reply.started":"2023-08-22T05:01:57.155455Z","shell.execute_reply":"2023-08-22T05:01:58.333469Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(classification_report(ytest,predictions))","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:58.335886Z","iopub.execute_input":"2023-08-22T05:01:58.337470Z","iopub.status.idle":"2023-08-22T05:01:58.376745Z","shell.execute_reply.started":"2023-08-22T05:01:58.337432Z","shell.execute_reply":"2023-08-22T05:01:58.375747Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(confusion_matrix(ytest,predictions))","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:58.378276Z","iopub.execute_input":"2023-08-22T05:01:58.378677Z","iopub.status.idle":"2023-08-22T05:01:58.393662Z","shell.execute_reply.started":"2023-08-22T05:01:58.378641Z","shell.execute_reply":"2023-08-22T05:01:58.392693Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 6.Predictions on the Model","metadata":{}},{"cell_type":"code","source":"# Transforming test data\ntest_data=test_data.to_numpy()\ntest_data=test_data.reshape(-1, 28, 28, 1)\ntest_data = (test_data/255.0)","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:58.394818Z","iopub.execute_input":"2023-08-22T05:01:58.395549Z","iopub.status.idle":"2023-08-22T05:01:58.717386Z","shell.execute_reply.started":"2023-08-22T05:01:58.395508Z","shell.execute_reply":"2023-08-22T05:01:58.696712Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"np.random.seed(69)","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:58.731906Z","iopub.execute_input":"2023-08-22T05:01:58.732590Z","iopub.status.idle":"2023-08-22T05:01:58.748358Z","shell.execute_reply.started":"2023-08-22T05:01:58.732559Z","shell.execute_reply":"2023-08-22T05:01:58.747440Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Predicting labels for test data.\npredict_label = model.predict(test_data)\npredict_label = np.argmax(predict_label, axis=1)    #argmax is used to find the highest intensity or value within an image.\nsubmission = pd.DataFrame({\"ImageId\": range(1, len(test_data)+1), \"Label\": predict_label})\nsubmission.set_index(\"ImageId\", inplace=True)\n\nsubmission","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:01:58.749787Z","iopub.execute_input":"2023-08-22T05:01:58.750229Z","iopub.status.idle":"2023-08-22T05:02:05.198600Z","shell.execute_reply.started":"2023-08-22T05:01:58.750194Z","shell.execute_reply":"2023-08-22T05:02:05.197461Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#submission file\nsubmission.to_csv(\"submission.csv\")\n","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:02:05.202568Z","iopub.execute_input":"2023-08-22T05:02:05.202905Z","iopub.status.idle":"2023-08-22T05:02:05.279416Z","shell.execute_reply.started":"2023-08-22T05:02:05.202875Z","shell.execute_reply":"2023-08-22T05:02:05.278541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#save the model\nmodel.save(\"model.h5\")","metadata":{"execution":{"iopub.status.busy":"2023-08-22T05:02:05.280865Z","iopub.execute_input":"2023-08-22T05:02:05.281200Z","iopub.status.idle":"2023-08-22T05:02:05.418976Z","shell.execute_reply.started":"2023-08-22T05:02:05.281167Z","shell.execute_reply":"2023-08-22T05:02:05.417912Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":" ","metadata":{}},{"cell_type":"markdown","source":"### Thank you !!","metadata":{}}]}