DeepSeek-Coder/LeafSpeciesDetection_DECISIONTREE.ipynb
2025-02-17 00:49:38 -08:00

1390 lines
90 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"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": [
"<a href=\"https://colab.research.google.com/github/Orrm23/DeepSeek-Coder/blob/main/LeafSpeciesDetection_DECISIONTREE.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aYYh8N1KOChK"
},
"source": [
"# **Day-5 | Leaf Species Detection | DECISION TREE**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TUcGB8gXNufD"
},
"source": [
"### *Import basic Libraries*"
]
},
{
"cell_type": "code",
"metadata": {
"id": "XBeYR9xuNn_1"
},
"source": [
"from sklearn.datasets import load_iris\n",
"import pandas as pd\n",
"import numpy as np"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "RSWsaAz7OOzj"
},
"source": [
"### *Load Dataset*"
]
},
{
"cell_type": "code",
"metadata": {
"id": "1gYg7y7WOai_"
},
"source": [
"dataset = load_iris()"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "ql3v6_gZOjAD"
},
"source": [
"### *Summarize Dataset*"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "_x9QzbrMOl0l",
"outputId": "ab81e859-9cc0-4483-c174-5012b2b47ca4"
},
"source": [
"print(dataset.data)\n",
"print(dataset.target)\n",
"\n",
"print(dataset.data.shape)"
],
"execution_count": 3,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[[5.1 3.5 1.4 0.2]\n",
" [4.9 3. 1.4 0.2]\n",
" [4.7 3.2 1.3 0.2]\n",
" [4.6 3.1 1.5 0.2]\n",
" [5. 3.6 1.4 0.2]\n",
" [5.4 3.9 1.7 0.4]\n",
" [4.6 3.4 1.4 0.3]\n",
" [5. 3.4 1.5 0.2]\n",
" [4.4 2.9 1.4 0.2]\n",
" [4.9 3.1 1.5 0.1]\n",
" [5.4 3.7 1.5 0.2]\n",
" [4.8 3.4 1.6 0.2]\n",
" [4.8 3. 1.4 0.1]\n",
" [4.3 3. 1.1 0.1]\n",
" [5.8 4. 1.2 0.2]\n",
" [5.7 4.4 1.5 0.4]\n",
" [5.4 3.9 1.3 0.4]\n",
" [5.1 3.5 1.4 0.3]\n",
" [5.7 3.8 1.7 0.3]\n",
" [5.1 3.8 1.5 0.3]\n",
" [5.4 3.4 1.7 0.2]\n",
" [5.1 3.7 1.5 0.4]\n",
" [4.6 3.6 1. 0.2]\n",
" [5.1 3.3 1.7 0.5]\n",
" [4.8 3.4 1.9 0.2]\n",
" [5. 3. 1.6 0.2]\n",
" [5. 3.4 1.6 0.4]\n",
" [5.2 3.5 1.5 0.2]\n",
" [5.2 3.4 1.4 0.2]\n",
" [4.7 3.2 1.6 0.2]\n",
" [4.8 3.1 1.6 0.2]\n",
" [5.4 3.4 1.5 0.4]\n",
" [5.2 4.1 1.5 0.1]\n",
" [5.5 4.2 1.4 0.2]\n",
" [4.9 3.1 1.5 0.2]\n",
" [5. 3.2 1.2 0.2]\n",
" [5.5 3.5 1.3 0.2]\n",
" [4.9 3.6 1.4 0.1]\n",
" [4.4 3. 1.3 0.2]\n",
" [5.1 3.4 1.5 0.2]\n",
" [5. 3.5 1.3 0.3]\n",
" [4.5 2.3 1.3 0.3]\n",
" [4.4 3.2 1.3 0.2]\n",
" [5. 3.5 1.6 0.6]\n",
" [5.1 3.8 1.9 0.4]\n",
" [4.8 3. 1.4 0.3]\n",
" [5.1 3.8 1.6 0.2]\n",
" [4.6 3.2 1.4 0.2]\n",
" [5.3 3.7 1.5 0.2]\n",
" [5. 3.3 1.4 0.2]\n",
" [7. 3.2 4.7 1.4]\n",
" [6.4 3.2 4.5 1.5]\n",
" [6.9 3.1 4.9 1.5]\n",
" [5.5 2.3 4. 1.3]\n",
" [6.5 2.8 4.6 1.5]\n",
" [5.7 2.8 4.5 1.3]\n",
" [6.3 3.3 4.7 1.6]\n",
" [4.9 2.4 3.3 1. ]\n",
" [6.6 2.9 4.6 1.3]\n",
" [5.2 2.7 3.9 1.4]\n",
" [5. 2. 3.5 1. ]\n",
" [5.9 3. 4.2 1.5]\n",
" [6. 2.2 4. 1. ]\n",
" [6.1 2.9 4.7 1.4]\n",
" [5.6 2.9 3.6 1.3]\n",
" [6.7 3.1 4.4 1.4]\n",
" [5.6 3. 4.5 1.5]\n",
" [5.8 2.7 4.1 1. ]\n",
" [6.2 2.2 4.5 1.5]\n",
" [5.6 2.5 3.9 1.1]\n",
" [5.9 3.2 4.8 1.8]\n",
" [6.1 2.8 4. 1.3]\n",
" [6.3 2.5 4.9 1.5]\n",
" [6.1 2.8 4.7 1.2]\n",
" [6.4 2.9 4.3 1.3]\n",
" [6.6 3. 4.4 1.4]\n",
" [6.8 2.8 4.8 1.4]\n",
" [6.7 3. 5. 1.7]\n",
" [6. 2.9 4.5 1.5]\n",
" [5.7 2.6 3.5 1. ]\n",
" [5.5 2.4 3.8 1.1]\n",
" [5.5 2.4 3.7 1. ]\n",
" [5.8 2.7 3.9 1.2]\n",
" [6. 2.7 5.1 1.6]\n",
" [5.4 3. 4.5 1.5]\n",
" [6. 3.4 4.5 1.6]\n",
" [6.7 3.1 4.7 1.5]\n",
" [6.3 2.3 4.4 1.3]\n",
" [5.6 3. 4.1 1.3]\n",
" [5.5 2.5 4. 1.3]\n",
" [5.5 2.6 4.4 1.2]\n",
" [6.1 3. 4.6 1.4]\n",
" [5.8 2.6 4. 1.2]\n",
" [5. 2.3 3.3 1. ]\n",
" [5.6 2.7 4.2 1.3]\n",
" [5.7 3. 4.2 1.2]\n",
" [5.7 2.9 4.2 1.3]\n",
" [6.2 2.9 4.3 1.3]\n",
" [5.1 2.5 3. 1.1]\n",
" [5.7 2.8 4.1 1.3]\n",
" [6.3 3.3 6. 2.5]\n",
" [5.8 2.7 5.1 1.9]\n",
" [7.1 3. 5.9 2.1]\n",
" [6.3 2.9 5.6 1.8]\n",
" [6.5 3. 5.8 2.2]\n",
" [7.6 3. 6.6 2.1]\n",
" [4.9 2.5 4.5 1.7]\n",
" [7.3 2.9 6.3 1.8]\n",
" [6.7 2.5 5.8 1.8]\n",
" [7.2 3.6 6.1 2.5]\n",
" [6.5 3.2 5.1 2. ]\n",
" [6.4 2.7 5.3 1.9]\n",
" [6.8 3. 5.5 2.1]\n",
" [5.7 2.5 5. 2. ]\n",
" [5.8 2.8 5.1 2.4]\n",
" [6.4 3.2 5.3 2.3]\n",
" [6.5 3. 5.5 1.8]\n",
" [7.7 3.8 6.7 2.2]\n",
" [7.7 2.6 6.9 2.3]\n",
" [6. 2.2 5. 1.5]\n",
" [6.9 3.2 5.7 2.3]\n",
" [5.6 2.8 4.9 2. ]\n",
" [7.7 2.8 6.7 2. ]\n",
" [6.3 2.7 4.9 1.8]\n",
" [6.7 3.3 5.7 2.1]\n",
" [7.2 3.2 6. 1.8]\n",
" [6.2 2.8 4.8 1.8]\n",
" [6.1 3. 4.9 1.8]\n",
" [6.4 2.8 5.6 2.1]\n",
" [7.2 3. 5.8 1.6]\n",
" [7.4 2.8 6.1 1.9]\n",
" [7.9 3.8 6.4 2. ]\n",
" [6.4 2.8 5.6 2.2]\n",
" [6.3 2.8 5.1 1.5]\n",
" [6.1 2.6 5.6 1.4]\n",
" [7.7 3. 6.1 2.3]\n",
" [6.3 3.4 5.6 2.4]\n",
" [6.4 3.1 5.5 1.8]\n",
" [6. 3. 4.8 1.8]\n",
" [6.9 3.1 5.4 2.1]\n",
" [6.7 3.1 5.6 2.4]\n",
" [6.9 3.1 5.1 2.3]\n",
" [5.8 2.7 5.1 1.9]\n",
" [6.8 3.2 5.9 2.3]\n",
" [6.7 3.3 5.7 2.5]\n",
" [6.7 3. 5.2 2.3]\n",
" [6.3 2.5 5. 1.9]\n",
" [6.5 3. 5.2 2. ]\n",
" [6.2 3.4 5.4 2.3]\n",
" [5.9 3. 5.1 1.8]]\n",
"[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
" 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2\n",
" 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n",
" 2 2]\n",
"(150, 4)\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TZJDaTW3Or3X"
},
"source": [
"### *Segregate Dataset into X(Input/IndependentVariable) & Y(Output/DependentVariable)*"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "EG1_3L0hOoq0",
"outputId": "4497898b-6264-4286-abb3-6394ec005754"
},
"source": [
"X = pd.DataFrame(dataset.data, columns=dataset.feature_names)\n",
"X"
],
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
"0 5.1 3.5 1.4 0.2\n",
"1 4.9 3.0 1.4 0.2\n",
"2 4.7 3.2 1.3 0.2\n",
"3 4.6 3.1 1.5 0.2\n",
"4 5.0 3.6 1.4 0.2\n",
".. ... ... ... ...\n",
"145 6.7 3.0 5.2 2.3\n",
"146 6.3 2.5 5.0 1.9\n",
"147 6.5 3.0 5.2 2.0\n",
"148 6.2 3.4 5.4 2.3\n",
"149 5.9 3.0 5.1 1.8\n",
"\n",
"[150 rows x 4 columns]"
],
"text/html": [
"\n",
" <div id=\"df-e2b913d5-fa21-4bb1-8f04-5952f668df8e\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sepal length (cm)</th>\n",
" <th>sepal width (cm)</th>\n",
" <th>petal length (cm)</th>\n",
" <th>petal width (cm)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>5.1</td>\n",
" <td>3.5</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4.9</td>\n",
" <td>3.0</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4.7</td>\n",
" <td>3.2</td>\n",
" <td>1.3</td>\n",
" <td>0.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4.6</td>\n",
" <td>3.1</td>\n",
" <td>1.5</td>\n",
" <td>0.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5.0</td>\n",
" <td>3.6</td>\n",
" <td>1.4</td>\n",
" <td>0.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>6.7</td>\n",
" <td>3.0</td>\n",
" <td>5.2</td>\n",
" <td>2.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>6.3</td>\n",
" <td>2.5</td>\n",
" <td>5.0</td>\n",
" <td>1.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>6.5</td>\n",
" <td>3.0</td>\n",
" <td>5.2</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>6.2</td>\n",
" <td>3.4</td>\n",
" <td>5.4</td>\n",
" <td>2.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>5.9</td>\n",
" <td>3.0</td>\n",
" <td>5.1</td>\n",
" <td>1.8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>150 rows × 4 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e2b913d5-fa21-4bb1-8f04-5952f668df8e')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-e2b913d5-fa21-4bb1-8f04-5952f668df8e button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-e2b913d5-fa21-4bb1-8f04-5952f668df8e');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-3fa5a8c8-0d89-4e94-9eb6-a6f83fb4b61a\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-3fa5a8c8-0d89-4e94-9eb6-a6f83fb4b61a')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-3fa5a8c8-0d89-4e94-9eb6-a6f83fb4b61a button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" <div id=\"id_cd5c8bd3-0029-41c9-854f-eed3f438d4f0\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('X')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_cd5c8bd3-0029-41c9-854f-eed3f438d4f0 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('X');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "X",
"summary": "{\n \"name\": \"X\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"sepal length (cm)\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.8280661279778629,\n \"min\": 4.3,\n \"max\": 7.9,\n \"num_unique_values\": 35,\n \"samples\": [\n 6.2,\n 4.5,\n 5.6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"sepal width (cm)\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.435866284936698,\n \"min\": 2.0,\n \"max\": 4.4,\n \"num_unique_values\": 23,\n \"samples\": [\n 2.3,\n 4.0,\n 3.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"petal length (cm)\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.7652982332594667,\n \"min\": 1.0,\n \"max\": 6.9,\n \"num_unique_values\": 43,\n \"samples\": [\n 6.7,\n 3.8,\n 3.7\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"petal width (cm)\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.7622376689603465,\n \"min\": 0.1,\n \"max\": 2.5,\n \"num_unique_values\": 22,\n \"samples\": [\n 0.2,\n 1.2,\n 1.3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fVIBC6zbPmD_",
"outputId": "1a834214-4d26-4413-da1f-2a5a9a45b115"
},
"source": [
"Y = dataset.target\n",
"Y"
],
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nlnZPPJ2Pt8e"
},
"source": [
"### *Splitting Dataset into Train & Test*"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "WsXx-qmhPzSV",
"outputId": "3234893f-95d4-477f-fa50-86e38ad8e391"
},
"source": [
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)\n",
"print(X_train.shape)\n",
"print(X_test.shape)"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(112, 4)\n",
"(38, 4)\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4W9cvXrPR_c5"
},
"source": [
"### *Finding best max_depth Value*"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 581
},
"id": "MLko_TEoSOVY",
"outputId": "932213ba-06aa-49c7-dbba-2ea593edf2d4"
},
"source": [
"accuracy = []\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.metrics import accuracy_score\n",
"import matplotlib.pyplot as plt\n",
"\n",
"for i in range(1, 10):\n",
" model = DecisionTreeClassifier(max_depth = i, random_state = 0)\n",
" model.fit(X_train, y_train)\n",
" pred = model.predict(X_test)\n",
" score = accuracy_score(y_test, pred)\n",
" accuracy.append(score)\n",
"\n",
"plt.figure(figsize=(12, 6))\n",
"plt.plot(range(1, 10), accuracy, color='red', linestyle='dashed', marker='o',\n",
" markerfacecolor='blue', markersize=10)\n",
"plt.title('Finding best Max_Depth')\n",
"plt.xlabel('pred')\n",
"plt.ylabel('score')"
],
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0, 0.5, 'score')"
]
},
"metadata": {},
"execution_count": 7
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
],
"image/png": "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MdLT041WrVoZt956q5GSklKgjNmGDh1qlC9fPs+v79ixw5BkPPvss4ZhGMb58+eNihUrGiNGjMjRLjEx0QgICMixPft37+mnn7Zvs1qtRs+ePQ0vLy/7z/zUqVOGJGPSpEm55ivI7y8AoOxhRB4AUKbMmjVL69evz7HcyJNPPpnjeceOHXXgwAH789WrV8vDw0MjR460b3N3d9fTTz9d4FwRERGqW7eu/Xnz5s3l7+9v/z5ZWVnasGGDoqKiFBISYm9Xr149de/evcDfx8PDQ0888YT9uZeXl5544gklJSVp27ZtkqTPP/9cjRo1UsOGDXOcuXDvvfdKkr788ktJUsWKFSVJK1asuCkztN9///26dOmSvvjiC50/f15ffPFFnqfVS5Kvr699/dy5c0pJSVHHjh21ffv2HO2Cg4PtvwcdO3bUzp07NW/evBKflC771m/nz5+XZLsMITk5WYMHD87xc3V3d1d4eLj953qtp556yr6efQlGRkaGNmzYUOAcN/r9BQCUPczGAwAoU9q0aZPnZHe58fHxsV+HnK1SpUo6d+6c/fmhQ4dUvXr16+7Z3aBBgwJ/n1tvvfW6bdd+n6SkJF26dEn16tW7rl1u2/ISEhKi8uXL59hWv359SbZrru+8807t27dPu3fvvu51Z0tKSpIkDRw4UB999JGGDx+usWPHqnPnzurbt6/69+8vN7fijwUEBgYqIiJCn376qS5evKisrCz1798/z/ZffPGFXn31Ve3cuTPHtfy5zR8waNAgffLJJ1q1apUef/xxde7cudh5/+rChQuSJD8/P0nSvn37JMn+gchf/fWDBDc3N9WpUyfHtmv7qiAK8vsLACh7KOQBAC7N3d3d1O9j/DmxWWmyWq1q1qyZpk+fnuvXQ0NDJdlGwL/++mt9+eWXWrVqleLj47V48WLde++9WrduXYn87B544AGNGDFCiYmJ6t69u/0sgL/65ptv1Lt3b91111167733VL16dXl6emr+/Pn69NNPr2t/5swZ/fjjj5KkX3/9VVartUQ+fLjWrl27JF39oCX7rIVFixYpODj4uvY3424GpfX7CwBwLBTyAADcQM2aNZWQkKALFy7kGJXfs2dPiX2PatWqycfHR/v377/ua7lty8vx48eVlpaWY1Q+e1b1WrVqSZLq1q2rn376SZ07d77hbPhubm7q3LmzOnfurOnTp2vq1Kl66aWX9OWXXyoiIqJQs+nnJjo6Wk888YQ2b96c723cli1bJh8fH61duzbHPebnz5+fa/tRo0bp/PnzmjZtmsaNG6cZM2YoJiamWFn/atGiRbJYLOrSpYsk2S+dqFatmiIiIm64v9Vq1YEDB+yj8NL1fVXcny8AoGziGnkAAG6gR48eyszMtM8gLtmuaX/33XdL7Hu4u7srIiJCcXFxOn78uH37/v37tWbNmgIfJzMzU++//779eUZGht5//30FBgYqLCxMku3a9GPHjunDDz+8bv9Lly4pLS1NknT27Nnrvt6yZUtJsp/anv2BQW634iuIChUqaPbs2Zo8ebJ69eqVZzt3d3dZLJYct1U7ePBgrjP6L126VIsXL9brr7+usWPHatCgQRo/fvx1t4krjtdff13r1q3TwIEDddttt0mSIiMj5e/vr6lTp+rKlSvX7XPq1Knrts2cOdO+bhiGZs6cKU9PT/ulAOXKlZNU9J8vAKBsYkQeAIAb6NWrl9q3b6+xY8fq4MGDaty4sZYvX66UlJQS/T6TJ0/WunXr1L59e40cOVJZWVmaOXOmmjZtqp07dxboGCEhIfrHP/6hgwcPqn79+lq8eLF27typDz74QJ6enpJst01bsmSJnnzySX355Zdq3769srKy9Ntvv2nJkiVau3atWrdurSlTpujrr79Wz549VbNmTSUlJem9997TLbfcog4dOkiyjUJXrFhRc+bMkZ+fn8qXL6/w8HDVrl27wK+7ILfx69mzp6ZPn65u3brpgQceUFJSkmbNmqV69erpf//7n71dUlKSRo4cqXvuucc+kdzMmTP15Zdf6pFHHtGmTZsKdYp9ZmamPvnkE0nS5cuXdejQIa1cuVL/+9//dM899+S4zZu/v79mz56thx9+WLfffrsGDRqkwMBAHT58WKtWrVL79u1zFO4+Pj6Kj4/X0KFDFR4erjVr1mjVqlV68cUX7de9+/r6qnHjxlq8eLHq16+vypUrq2nTpmratGmBXwMAoOyhkAcA4Abc3Ny0cuVKjRkzRp988oksFot69+6tt99+W61atSqx7xMWFqY1a9boueee04QJExQaGqopU6Zo9+7d+u233wp0jEqVKmnBggV6+umn9eGHHyooKEgzZ87UiBEjcryeuLg4/fOf/9TChQsVGxurcuXKqU6dOho9erT9VO/e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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sthecgH3QI4d"
},
"source": [
"### *Training*"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
},
"id": "_1iHKy-0QHm6",
"outputId": "63f5d1c9-bef7-4778-9a1f-8f2170a90770"
},
"source": [
"from sklearn.tree import DecisionTreeClassifier\n",
"model = DecisionTreeClassifier(criterion = 'entropy',max_depth = 3, random_state = 0)\n",
"model.fit(X_train,y_train)"
],
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DecisionTreeClassifier(criterion='entropy', max_depth=3, random_state=0)"
],
"text/html": [
"<style>#sk-container-id-1 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-1 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-1 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-1 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content {\n",
" max-height: 0;\n",
" max-width: 0;\n",
" overflow: hidden;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" max-height: 200px;\n",
" max-width: 100%;\n",
" overflow: auto;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-1 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-1 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-1 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-1 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-1 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeClassifier(criterion=&#x27;entropy&#x27;, max_depth=3, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>DecisionTreeClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(criterion=&#x27;entropy&#x27;, max_depth=3, random_state=0)</pre></div> </div></div></div></div>"
]
},
"metadata": {},
"execution_count": 8
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "h-dm7-tjXDQO"
},
"source": [
"### *Prediction*"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "H9IXzjDeXFfv",
"outputId": "0b2faac8-d1d8-4326-eed2-adca7901bbf1"
},
"source": [
"y_pred = model.predict(X_test)\n",
"print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"
],
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[[2 2]\n",
" [1 1]\n",
" [0 0]\n",
" [2 2]\n",
" [0 0]\n",
" [2 2]\n",
" [0 0]\n",
" [1 1]\n",
" [1 1]\n",
" [1 1]\n",
" [2 2]\n",
" [1 1]\n",
" [1 1]\n",
" [1 1]\n",
" [1 1]\n",
" [0 0]\n",
" [1 1]\n",
" [1 1]\n",
" [0 0]\n",
" [0 0]\n",
" [2 2]\n",
" [1 1]\n",
" [0 0]\n",
" [0 0]\n",
" [2 2]\n",
" [0 0]\n",
" [0 0]\n",
" [1 1]\n",
" [1 1]\n",
" [0 0]\n",
" [2 2]\n",
" [1 1]\n",
" [0 0]\n",
" [2 2]\n",
" [2 2]\n",
" [1 1]\n",
" [0 0]\n",
" [2 1]]\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DZ0nCNS_Xg4I"
},
"source": [
"### *Accuracy Score*"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "z6zi5kA4XjXx",
"outputId": "93e85e20-69e0-4772-deb5-2e6092cb6940"
},
"source": [
"from sklearn.metrics import accuracy_score\n",
"print(\"Accuracy of the Model: {0}%\".format(accuracy_score(y_test, y_pred)*100))"
],
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Accuracy of the Model: 97.36842105263158%\n"
]
}
]
}
]
}