diff --git a/Project_Outline.ipynb b/Project_Outline.ipynb
index e47f144..2383ed6 100644
--- a/Project_Outline.ipynb
+++ b/Project_Outline.ipynb
@@ -1 +1,1209 @@
-{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Project Outline.ipynb","provenance":[],"authorship_tag":"ABX9TyPZl4d0nA5Qmq8X1mDqSb1O"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# **Title of Project**"],"metadata":{"id":"dqZ-nhxiganh"}},{"cell_type":"markdown","source":["-------------"],"metadata":{"id":"gScHkw6jjrLo"}},{"cell_type":"markdown","source":["## **Objective**"],"metadata":{"id":"Xns_rCdhh-vZ"}},{"cell_type":"markdown","source":[""],"metadata":{"id":"9sPvnFM1iI9l"}},{"cell_type":"markdown","source":["## **Data Source**"],"metadata":{"id":"-Vbnt9CciKJP"}},{"cell_type":"markdown","source":[""],"metadata":{"id":"sGcv5WqQiNyl"}},{"cell_type":"markdown","source":["## **Import Library**"],"metadata":{"id":"r7GrZzX0iTlV"}},{"cell_type":"code","source":[""],"metadata":{"id":"UkK6NH9DiW-X"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Import Data**"],"metadata":{"id":"9lHPQj1XiOUc"}},{"cell_type":"code","source":[""],"metadata":{"id":"zcU1fdnGho6M"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Describe Data**"],"metadata":{"id":"7PUnimBoiX-x"}},{"cell_type":"code","source":[""],"metadata":{"id":"kG15arusiZ8Z"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Data Visualization**"],"metadata":{"id":"oBGX4Ekniriz"}},{"cell_type":"code","source":[""],"metadata":{"id":"lW-OIRK0iuzO"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Data Preprocessing**"],"metadata":{"id":"UqfyPOCYiiww"}},{"cell_type":"code","source":[""],"metadata":{"id":"3cyr3fbGin0A"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Define Target Variable (y) and Feature Variables (X)**"],"metadata":{"id":"2jXJpdAuiwYW"}},{"cell_type":"code","source":[""],"metadata":{"id":"QBCakTuli57t"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Train Test Split**"],"metadata":{"id":"90_0q_Pbi658"}},{"cell_type":"code","source":[""],"metadata":{"id":"u60YYaOFi-Dw"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Modeling**"],"metadata":{"id":"cIhyseNria7W"}},{"cell_type":"code","source":[""],"metadata":{"id":"Toq58wpkjCw7"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Model Evaluation**"],"metadata":{"id":"vhAwWfG0jFun"}},{"cell_type":"code","source":[""],"metadata":{"id":"lND3jJj_jhx4"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Prediction**"],"metadata":{"id":"8AzwG7oLjiQI"}},{"cell_type":"code","source":[""],"metadata":{"id":"JLebGzDJjknA"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## **Explaination**"],"metadata":{"id":"SBo38CJZjlEX"}},{"cell_type":"markdown","source":[""],"metadata":{"id":"Ybi8FR9Kjv00"}}]}
\ No newline at end of file
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "authorship_tag": "ABX9TyMDsrofmVp478drccS8I2b1",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Import Library**\n"
+ ],
+ "metadata": {
+ "id": "v5gs1zYHcHsS"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import pandas as pd"
+ ],
+ "metadata": {
+ "id": "3Ep9XgbacebF"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import numpy as np"
+ ],
+ "metadata": {
+ "id": "ocuC3ZxFcjNW"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt"
+ ],
+ "metadata": {
+ "id": "FnWTTK_KcnMP"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Import Data**"
+ ],
+ "metadata": {
+ "id": "BtBXkBgwcu2O"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from sklearn.datasets import load_digits"
+ ],
+ "metadata": {
+ "id": "joFDzlv-czcb"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "df = load_digits()"
+ ],
+ "metadata": {
+ "id": "vhFWaq1Fc-OB"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "_, axes = plt.subplots(nrows=1, ncols=4, figsize=(10, 3))\n",
+ "for ax, image, label in zip(axes, df.images, df.target):\n",
+ " ax.set_axis_off()\n",
+ " ax.imshow(image, cmap=plt.cm.gray_r, interpolation=\"nearest\")\n",
+ " ax.set_title(\"Training: %i\" % label)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 187
+ },
+ "id": "ozAsy9ijdB_2",
+ "outputId": "97a8b6e2-903b-4a58-9944-89bfd05ea3fa"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxsAAADSCAYAAAAi0d0oAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAASFklEQVR4nO3db5CVZd0H8N8KsRsBsiLkkiUsOmPJIAHNJCbgsBCkBkmgLxhZxgYqGaM/M8sU5oJlkjZjhRnxBgNzlDLIJlMY2JymN7GyloYzSyw6GU6Kyx9F/no/L57HfaIld8Hr8rC7n88MM+x1zv29rwP82POd++w5ZUVRFAEAAJDYOaXeAAAA0D0pGwAAQBbKBgAAkIWyAQAAZKFsAAAAWSgbAABAFsoGAACQhbIBAABkoWwAAABZKBtnoLa2NoYNG3ZGx9bX10dZWVnaDcFZyJxAx8wJdMycdG3dqmyUlZV16ldDQ0Opt3rW+dOf/hSf+tSnom/fvnHBBRfErbfeGq+//nqpt0UG5uTMPPnkk3HzzTfHyJEjo1evXmf8jY+uwZycvkOHDsV9990XU6dOjaqqqujfv398/OMfj/vvvz9OnDhR6u2RgTk5M3feeWd88pOfjMGDB0dFRUVccsklsXjx4njllVdKvbUsyoqiKEq9iVTWrVt30tc///nPY9OmTbF27dqT1qdMmRIf/OAHz/g8x44di7feeivKy8tP+9jjx4/H8ePHo6Ki4ozPn1pTU1NcccUV8dGPfjQWLFgQ//jHP+Kee+6Jq6++Oh5//PFSb4/EzMmZqa2tjYcffjjGjBkTL774YvTq1St2795d6m2RiTk5fc8++2yMGjUqJk+eHFOnTo0BAwbEE088Eb/+9a/jpptuigceeKDUWyQxc3JmZs2aFYMHD45LL700+vfvHzt27IjVq1fHkCFDoqmpKT7wgQ+UeotpFd3YLbfcUnTmIb7xxhvvwW7OXtOnTy+qqqqK/fv3t62tXr26iIjiiSeeKOHOeC+Yk8556aWXiqNHjxZFURTXXHNNcdFFF5V2Q7ynzEnHXnnlleLZZ59ttz5//vwiIorm5uYS7Ir3kjk5c7/85S+LiCgeeuihUm8luW71MqrOmDRpUowcOTIaGxtjwoQJ0bdv3/jmN78ZEREbN26Ma665JoYOHRrl5eUxYsSIuOOOO9pd/v3P1w7u3r07ysrK4p577omf/exnMWLEiCgvL49PfOIT8ec///mkY0/12sGysrJYtGhRbNiwIUaOHBnl5eVx2WWXxe9///t2+29oaIhx48ZFRUVFjBgxIlatWnXKzFdffTWef/75OHTo0Dv+eRw4cCA2bdoUc+fOjQEDBrSt33TTTdGvX7945JFH3vF4uidz0t7QoUPjfe97X4f3o+cwJyc7//zz47LLLmu3/rnPfS4iInbs2PGOx9M9mZPOefvx7du374yOP5v1LvUGSmHv3r0xffr0uPHGG2Pu3Lltl/bWrFkT/fr1i6997WvRr1+/2LJlS3z729+OAwcOxN13391h7i9+8Ys4ePBgLFy4MMrKyuL73/9+XH/99bFr164On6T88Y9/jEcffTS+/OUvR//+/eNHP/pRzJo1K1588cUYNGhQRERs3749pk2bFlVVVbFs2bI4ceJELF++PAYPHtwub+XKlbFs2bLYunVrTJo06b+e969//WscP348xo0bd9J6nz59YvTo0bF9+/YOHzfdkzmBjpmTjr388ssR8b9lhJ7JnLRXFEXs3bs3jh8/Hs3NzbFkyZLo1atX9/xeVOpLKzmd6nLexIkTi4gofvrTn7a7/6FDh9qtLVy4sOjbt29x+PDhtrV58+ad9BKKlpaWIiKKQYMGFa+99lrb+saNG4uIKB577LG2tdtvv73dniKi6NOnT7Fz5862tWeeeaaIiOLHP/5x29p1111X9O3bt3jppZfa1pqbm4vevXu3y3z7PFu3bm33mP7d+vXri4gonnrqqXa3zZ49u7jgggve8Xi6PnPS8Zz8Jy+j6nnMyenPSVEUxZEjR4qPfexjxfDhw4tjx46d9vF0Leak83OyZ8+eIiLafl144YXFww8/3Klju5oe9zKqiIjy8vKYP39+u/X3v//9bb8/ePBgvPrqq3HVVVfFoUOH4vnnn+8w94YbbojKysq2r6+66qqIiNi1a1eHx9bU1MSIESPavh41alQMGDCg7dgTJ07E5s2bY+bMmTF06NC2+1188cUxffr0dnn19fVRFEWHDfnNN9+MiDjlD11VVFS03U7PY06gY+bknS1atCj+9re/xcqVK6N37x75YgrCnJzKeeedF5s2bYrHHnssli9fHueff363fRfQHjn5H/rQh6JPnz7t1p977rlYunRpbNmyJQ4cOHDSbfv37+8w9yMf+chJ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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Data Preprocessing**"
+ ],
+ "metadata": {
+ "id": "9AD6wZBqflon"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Flatten Image"
+ ],
+ "metadata": {
+ "id": "sh0UQbGHfr43"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "df.images.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "GGnClwdaf96n",
+ "outputId": "d7a381c6-c24c-4856-ca77-ee13b649b94c"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(1797, 8, 8)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 12
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "df.images[0]"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2qz0a3l_gKlI",
+ "outputId": "d4f87992-aab0-43fb-cb6e-e7c5c46d716d"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([[ 0., 0., 5., 13., 9., 1., 0., 0.],\n",
+ " [ 0., 0., 13., 15., 10., 15., 5., 0.],\n",
+ " [ 0., 3., 15., 2., 0., 11., 8., 0.],\n",
+ " [ 0., 4., 12., 0., 0., 8., 8., 0.],\n",
+ " [ 0., 5., 8., 0., 0., 9., 8., 0.],\n",
+ " [ 0., 4., 11., 0., 1., 12., 7., 0.],\n",
+ " [ 0., 2., 14., 5., 10., 12., 0., 0.],\n",
+ " [ 0., 0., 6., 13., 10., 0., 0., 0.]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 13
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "df.images[0].shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "e7wudT3-gN8U",
+ "outputId": "a2b1c369-fe5f-4452-e997-19e8df8bac7d"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(8, 8)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 14
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "len(df.images)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "y1YXqIVKgScn",
+ "outputId": "68205992-7b29-41b5-8b58-f216aa0e6719"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "1797"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 16
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "n_samples = len(df.images)\n",
+ "data = df.images.reshape((n_samples, -1))"
+ ],
+ "metadata": {
+ "id": "fOsOxcUTgZOQ"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data[0]"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "X5FNNs61gudS",
+ "outputId": "a3ae7351-2c74-47b1-bafd-b0f38fb7844d"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([ 0., 0., 5., 13., 9., 1., 0., 0., 0., 0., 13., 15., 10.,\n",
+ " 15., 5., 0., 0., 3., 15., 2., 0., 11., 8., 0., 0., 4.,\n",
+ " 12., 0., 0., 8., 8., 0., 0., 5., 8., 0., 0., 9., 8.,\n",
+ " 0., 0., 4., 11., 0., 1., 12., 7., 0., 0., 2., 14., 5.,\n",
+ " 10., 12., 0., 0., 0., 0., 6., 13., 10., 0., 0., 0.])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 19
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data[0].shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "JGz95wiugw9i",
+ "outputId": "429203b9-e601-4a13-d61b-c2b843e6d7d8"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(64,)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 20
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OJI67zxVg2hn",
+ "outputId": "aa28b5a3-28ec-4b5c-e3dd-1cabe7041d6a"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(1797, 64)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 21
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Scalingg Image Data**"
+ ],
+ "metadata": {
+ "id": "3cqX7uxxg6lW"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data.min()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-Rd3xl93g_VT",
+ "outputId": "84d504be-a580-48fa-f7df-91242a71c9cb"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "0.0"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 22
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data.max()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "pGlkZI5dhDAM",
+ "outputId": "e6ccc750-10ca-4567-a441-00e6b10ef659"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "16.0"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 23
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data = data/16"
+ ],
+ "metadata": {
+ "id": "AMMMrTb7hPCR"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data.min()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "yUHDLYYwhSpL",
+ "outputId": "122be94d-196b-4be7-9746-992bce223ed4"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "0.0"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 26
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data.max()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "ZlQJk0qZhV1I",
+ "outputId": "4cf6390b-1771-4f3d-8221-42b6b37c5067"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 27
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data[0]"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "o78RdBdrhYnh",
+ "outputId": "ad915599-0175-433d-a8c2-83418b117bc7"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([0. , 0. , 0.3125, 0.8125, 0.5625, 0.0625, 0. , 0. ,\n",
+ " 0. , 0. , 0.8125, 0.9375, 0.625 , 0.9375, 0.3125, 0. ,\n",
+ " 0. , 0.1875, 0.9375, 0.125 , 0. , 0.6875, 0.5 , 0. ,\n",
+ " 0. , 0.25 , 0.75 , 0. , 0. , 0.5 , 0.5 , 0. ,\n",
+ " 0. , 0.3125, 0.5 , 0. , 0. , 0.5625, 0.5 , 0. ,\n",
+ " 0. , 0.25 , 0.6875, 0. , 0.0625, 0.75 , 0.4375, 0. ,\n",
+ " 0. , 0.125 , 0.875 , 0.3125, 0.625 , 0.75 , 0. , 0. ,\n",
+ " 0. , 0. , 0.375 , 0.8125, 0.625 , 0. , 0. , 0. ])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 28
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Train Test Split Data**"
+ ],
+ "metadata": {
+ "id": "MoWIFkzWhdVe"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from sklearn.model_selection import train_test_split"
+ ],
+ "metadata": {
+ "id": "16BeaRfohjym"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "X_train, X_test, y_train, y_test = train_test_split(data, df.target, test_size=0.3)"
+ ],
+ "metadata": {
+ "id": "4LBv49AZh2yP"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "X_train.shape, X_test.shape, y_train.shape, y_test.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "GuvNBVqhh4-w",
+ "outputId": "f86f7105-ce4e-4139-95f7-6e194132b941"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "((1257, 64), (540, 64), (1257,), (540,))"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 36
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Random Forest Model**"
+ ],
+ "metadata": {
+ "id": "M70wSYCEir64"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from sklearn.ensemble import RandomForestClassifier"
+ ],
+ "metadata": {
+ "id": "vNCssNQniwJW"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "rf = RandomForestClassifier()"
+ ],
+ "metadata": {
+ "id": "ndqrmY68i43D"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "rf.fit(X_train, y_train)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "jjwsdb7FjAY6",
+ "outputId": "8200c532-c40e-4717-db5d-fa9f293022cb"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "RandomForestClassifier()"
+ ],
+ "text/html": [
+ "RandomForestClassifier() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 39
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Predict Test Data**"
+ ],
+ "metadata": {
+ "id": "TRe355sqjIEd"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "y_pred = rf.predict(X_test)"
+ ],
+ "metadata": {
+ "id": "SQDdGN89jMfx"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "y_pred"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "d0AqTtEzjR8L",
+ "outputId": "6a8daff4-e352-4491-a19a-a0db8ba014ef"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([6, 7, 3, 5, 2, 3, 5, 6, 8, 6, 7, 9, 4, 1, 9, 6, 7, 7, 0, 8, 0, 4,\n",
+ " 0, 5, 3, 4, 4, 2, 8, 2, 7, 3, 4, 0, 3, 9, 5, 4, 6, 6, 1, 8, 7, 1,\n",
+ " 9, 9, 0, 8, 5, 9, 4, 9, 4, 9, 1, 8, 3, 7, 9, 9, 5, 2, 6, 5, 3, 0,\n",
+ " 2, 7, 8, 0, 2, 6, 1, 9, 8, 6, 9, 3, 7, 6, 0, 4, 3, 4, 0, 2, 3, 6,\n",
+ " 9, 6, 8, 8, 0, 4, 5, 5, 2, 9, 0, 5, 9, 6, 3, 9, 2, 5, 5, 6, 1, 6,\n",
+ " 7, 4, 1, 9, 6, 2, 5, 3, 3, 6, 7, 3, 1, 3, 8, 3, 5, 2, 1, 1, 3, 8,\n",
+ " 0, 6, 0, 2, 7, 0, 5, 8, 1, 4, 0, 6, 8, 9, 7, 6, 6, 9, 1, 5, 8, 7,\n",
+ " 3, 4, 8, 5, 4, 9, 7, 6, 3, 0, 1, 3, 7, 4, 1, 8, 6, 9, 2, 9, 7, 9,\n",
+ " 7, 4, 6, 9, 4, 0, 1, 2, 0, 2, 1, 9, 2, 2, 4, 7, 4, 1, 9, 8, 0, 1,\n",
+ " 4, 9, 1, 3, 6, 8, 3, 8, 6, 5, 1, 9, 5, 4, 9, 1, 4, 0, 3, 0, 1, 0,\n",
+ " 5, 9, 4, 3, 5, 4, 3, 6, 2, 9, 6, 4, 6, 4, 1, 0, 8, 0, 9, 1, 5, 3,\n",
+ " 6, 1, 3, 0, 4, 3, 1, 0, 8, 9, 4, 1, 6, 4, 3, 8, 1, 4, 8, 0, 6, 5,\n",
+ " 0, 0, 8, 6, 1, 2, 9, 9, 8, 1, 5, 6, 7, 9, 5, 7, 1, 4, 0, 4, 1, 4,\n",
+ " 4, 1, 1, 8, 6, 7, 7, 5, 6, 2, 8, 1, 0, 7, 4, 0, 7, 8, 6, 5, 8, 3,\n",
+ " 1, 4, 3, 4, 9, 0, 2, 1, 8, 7, 3, 7, 8, 0, 2, 2, 5, 1, 2, 3, 9, 6,\n",
+ " 0, 3, 2, 9, 9, 9, 3, 6, 0, 8, 5, 4, 4, 0, 9, 3, 1, 8, 5, 2, 4, 7,\n",
+ " 6, 4, 7, 9, 3, 1, 5, 7, 8, 1, 2, 1, 5, 4, 6, 4, 7, 3, 3, 4, 3, 2,\n",
+ " 6, 2, 5, 3, 0, 9, 8, 7, 2, 2, 5, 3, 4, 0, 8, 8, 2, 3, 5, 3, 3, 3,\n",
+ " 8, 3, 1, 1, 3, 8, 1, 1, 8, 9, 4, 5, 8, 6, 9, 8, 8, 5, 4, 1, 2, 1,\n",
+ " 2, 6, 9, 0, 9, 5, 9, 7, 8, 5, 2, 1, 2, 7, 3, 1, 7, 0, 6, 0, 0, 2,\n",
+ " 7, 1, 6, 5, 2, 7, 7, 8, 6, 2, 9, 2, 0, 9, 0, 4, 5, 4, 6, 7, 2, 7,\n",
+ " 0, 2, 3, 3, 7, 1, 2, 8, 4, 0, 1, 6, 9, 8, 9, 9, 4, 9, 4, 7, 1, 0,\n",
+ " 5, 1, 2, 2, 4, 5, 1, 4, 1, 5, 3, 9, 1, 8, 4, 9, 6, 0, 5, 9, 7, 7,\n",
+ " 6, 9, 5, 8, 4, 8, 9, 2, 3, 5, 5, 4, 1, 1, 4, 6, 8, 6, 2, 6, 1, 7,\n",
+ " 3, 3, 6, 4, 6, 3, 8, 7, 1, 9, 7, 7])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 41
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [],
+ "metadata": {
+ "id": "we5tTz5GjUX5"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Model Accuracy**"
+ ],
+ "metadata": {
+ "id": "xjL5lEJljZPS"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from sklearn.metrics import confusion_matrix, classification_report"
+ ],
+ "metadata": {
+ "id": "vYyrJv_zjd3o"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "confusion_matrix(y_test, y_pred)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "I_xy18m8juLP",
+ "outputId": "c7ed186f-c759-4db1-d53a-f1628530022f"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([[49, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n",
+ " [ 0, 60, 0, 0, 0, 0, 0, 0, 0, 0],\n",
+ " [ 0, 0, 47, 0, 0, 0, 0, 0, 0, 0],\n",
+ " [ 0, 1, 0, 55, 0, 1, 0, 2, 2, 1],\n",
+ " [ 0, 0, 0, 0, 59, 0, 0, 0, 0, 0],\n",
+ " [ 0, 0, 0, 0, 0, 45, 0, 0, 0, 2],\n",
+ " [ 0, 0, 0, 0, 0, 0, 56, 0, 0, 0],\n",
+ " [ 0, 0, 0, 0, 0, 0, 0, 44, 0, 0],\n",
+ " [ 0, 1, 0, 0, 1, 0, 0, 2, 50, 0],\n",
+ " [ 0, 0, 0, 1, 0, 2, 0, 0, 1, 58]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 43
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "print(classification_report(y_test, y_pred))"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Pm4lVRU5j3BG",
+ "outputId": "5a65beda-1a1b-4200-a34b-95bf78122403"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " precision recall f1-score support\n",
+ "\n",
+ " 0 1.00 1.00 1.00 49\n",
+ " 1 0.97 1.00 0.98 60\n",
+ " 2 1.00 1.00 1.00 47\n",
+ " 3 0.98 0.89 0.93 62\n",
+ " 4 0.98 1.00 0.99 59\n",
+ " 5 0.94 0.96 0.95 47\n",
+ " 6 1.00 1.00 1.00 56\n",
+ " 7 0.92 1.00 0.96 44\n",
+ " 8 0.94 0.93 0.93 54\n",
+ " 9 0.95 0.94 0.94 62\n",
+ "\n",
+ " accuracy 0.97 540\n",
+ " macro avg 0.97 0.97 0.97 540\n",
+ "weighted avg 0.97 0.97 0.97 540\n",
+ "\n"
+ ]
+ }
+ ]
+ }
+ ]
+}