Skip to content

Instantly share code, notes, and snippets.

@aeyage
Last active June 18, 2023 12:04
Show Gist options
  • Select an option

  • Save aeyage/f1c6a105cb59fedf9eb272fc055e7a4f to your computer and use it in GitHub Desktop.

Select an option

Save aeyage/f1c6a105cb59fedf9eb272fc055e7a4f to your computer and use it in GitHub Desktop.
Wine Quality Classification
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/aeyage/f1c6a105cb59fedf9eb272fc055e7a4f/cpc152-project-group-29.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"id": "4b951145",
"metadata": {
"id": "4b951145"
},
"source": [
"# Step 1: Import Library"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "96d103d6",
"metadata": {
"id": "96d103d6"
},
"outputs": [],
"source": [
"# Read Red Wine Dataset by using pandas library\n",
"import pandas as pd\n",
"\n",
"# Process Numerical Data\n",
"import numpy as np\n",
"import numpy.random as npr\n",
"np.random.seed(0xdeadbeed)\n",
"\n",
"# Import Matplotlib and Seaborn for generating graphs\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns\n",
"\n",
"# Clear the warnings\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "markdown",
"id": "2a7439c0",
"metadata": {
"id": "2a7439c0"
},
"source": [
"# Step 2: Import data"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fcc11ce6",
"metadata": {
"id": "fcc11ce6",
"outputId": "41276158-a0e4-4ac9-ed0b-9294a7e4b854",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[Errno 2] No such file or directory: 'C:/Users/behji/Downloads'\n",
"/content\n"
]
}
],
"source": [
"cd C:/Users/behji/Downloads"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fce61cc4",
"metadata": {
"id": "fce61cc4"
},
"outputs": [],
"source": [
"# Get data from the dataset\n",
"wine = pd.read_csv(\"winequality.csv\") #open file import data"
]
},
{
"cell_type": "markdown",
"id": "089cbbdd",
"metadata": {
"id": "089cbbdd"
},
"source": [
"# Step 3: Understanding data"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "77f873fe",
"metadata": {
"id": "77f873fe",
"outputId": "3cf71364-eabd-4aad-d971-2a41f182d920",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(1599, 12)"
]
},
"metadata": {},
"execution_count": 250
}
],
"source": [
"# Print the total rows and columns\n",
"# Total column that is contained Dataset (1599 rows, 12 columns)\n",
"wine.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7df4f7cc",
"metadata": {
"id": "7df4f7cc",
"outputId": "992d1a9f-5de2-489e-a74c-678c065f9135",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" fixed acidity volatile acidity citric acid residual sugar chlorides \\\n",
"0 7.4 0.700 0.00 1.9 0.076 \n",
"1 7.8 0.880 0.00 2.6 0.098 \n",
"2 7.8 0.760 0.04 2.3 0.092 \n",
"3 11.2 0.280 0.56 1.9 0.075 \n",
"4 7.4 0.700 0.00 1.9 0.076 \n",
"... ... ... ... ... ... \n",
"1594 6.2 0.600 0.08 2.0 0.090 \n",
"1595 5.9 0.550 0.10 2.2 0.062 \n",
"1596 6.3 0.510 0.13 2.3 0.076 \n",
"1597 5.9 0.645 0.12 2.0 0.075 \n",
"1598 6.0 0.310 0.47 3.6 0.067 \n",
"\n",
" free sulfur dioxide total sulfur dioxide density pH sulphates \\\n",
"0 11.0 34.0 0.99780 3.51 0.56 \n",
"1 25.0 67.0 0.99680 3.20 0.68 \n",
"2 15.0 54.0 0.99700 3.26 0.65 \n",
"3 17.0 60.0 0.99800 3.16 0.58 \n",
"4 11.0 34.0 0.99780 3.51 0.56 \n",
"... ... ... ... ... ... \n",
"1594 32.0 44.0 0.99490 3.45 0.58 \n",
"1595 39.0 51.0 0.99512 3.52 0.76 \n",
"1596 29.0 40.0 0.99574 3.42 0.75 \n",
"1597 32.0 44.0 0.99547 3.57 0.71 \n",
"1598 18.0 42.0 0.99549 3.39 0.66 \n",
"\n",
" alcohol quality \n",
"0 9.4 5 \n",
"1 9.8 5 \n",
"2 9.8 5 \n",
"3 9.8 6 \n",
"4 9.4 5 \n",
"... ... ... \n",
"1594 10.5 5 \n",
"1595 11.2 6 \n",
"1596 11.0 6 \n",
"1597 10.2 5 \n",
"1598 11.0 6 \n",
"\n",
"[1599 rows x 12 columns]"
],
"text/html": [
"\n",
" <div id=\"df-82f28265-6529-4a21-a8af-2a743badf07d\">\n",
" <div 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>fixed acidity</th>\n",
" <th>volatile acidity</th>\n",
" <th>citric acid</th>\n",
" <th>residual sugar</th>\n",
" <th>chlorides</th>\n",
" <th>free sulfur dioxide</th>\n",
" <th>total sulfur dioxide</th>\n",
" <th>density</th>\n",
" <th>pH</th>\n",
" <th>sulphates</th>\n",
" <th>alcohol</th>\n",
" <th>quality</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7.4</td>\n",
" <td>0.700</td>\n",
" <td>0.00</td>\n",
" <td>1.9</td>\n",
" <td>0.076</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>0.99780</td>\n",
" <td>3.51</td>\n",
" <td>0.56</td>\n",
" <td>9.4</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>7.8</td>\n",
" <td>0.880</td>\n",
" <td>0.00</td>\n",
" <td>2.6</td>\n",
" <td>0.098</td>\n",
" <td>25.0</td>\n",
" <td>67.0</td>\n",
" <td>0.99680</td>\n",
" <td>3.20</td>\n",
" <td>0.68</td>\n",
" <td>9.8</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>7.8</td>\n",
" <td>0.760</td>\n",
" <td>0.04</td>\n",
" <td>2.3</td>\n",
" <td>0.092</td>\n",
" <td>15.0</td>\n",
" <td>54.0</td>\n",
" <td>0.99700</td>\n",
" <td>3.26</td>\n",
" <td>0.65</td>\n",
" <td>9.8</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11.2</td>\n",
" <td>0.280</td>\n",
" <td>0.56</td>\n",
" <td>1.9</td>\n",
" <td>0.075</td>\n",
" <td>17.0</td>\n",
" <td>60.0</td>\n",
" <td>0.99800</td>\n",
" <td>3.16</td>\n",
" <td>0.58</td>\n",
" <td>9.8</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>7.4</td>\n",
" <td>0.700</td>\n",
" <td>0.00</td>\n",
" <td>1.9</td>\n",
" <td>0.076</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>0.99780</td>\n",
" <td>3.51</td>\n",
" <td>0.56</td>\n",
" <td>9.4</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1594</th>\n",
" <td>6.2</td>\n",
" <td>0.600</td>\n",
" <td>0.08</td>\n",
" <td>2.0</td>\n",
" <td>0.090</td>\n",
" <td>32.0</td>\n",
" <td>44.0</td>\n",
" <td>0.99490</td>\n",
" <td>3.45</td>\n",
" <td>0.58</td>\n",
" <td>10.5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1595</th>\n",
" <td>5.9</td>\n",
" <td>0.550</td>\n",
" <td>0.10</td>\n",
" <td>2.2</td>\n",
" <td>0.062</td>\n",
" <td>39.0</td>\n",
" <td>51.0</td>\n",
" <td>0.99512</td>\n",
" <td>3.52</td>\n",
" <td>0.76</td>\n",
" <td>11.2</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1596</th>\n",
" <td>6.3</td>\n",
" <td>0.510</td>\n",
" <td>0.13</td>\n",
" <td>2.3</td>\n",
" <td>0.076</td>\n",
" <td>29.0</td>\n",
" <td>40.0</td>\n",
" <td>0.99574</td>\n",
" <td>3.42</td>\n",
" <td>0.75</td>\n",
" <td>11.0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1597</th>\n",
" <td>5.9</td>\n",
" <td>0.645</td>\n",
" <td>0.12</td>\n",
" <td>2.0</td>\n",
" <td>0.075</td>\n",
" <td>32.0</td>\n",
" <td>44.0</td>\n",
" <td>0.99547</td>\n",
" <td>3.57</td>\n",
" <td>0.71</td>\n",
" <td>10.2</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1598</th>\n",
" <td>6.0</td>\n",
" <td>0.310</td>\n",
" <td>0.47</td>\n",
" <td>3.6</td>\n",
" <td>0.067</td>\n",
" <td>18.0</td>\n",
" <td>42.0</td>\n",
" <td>0.99549</td>\n",
" <td>3.39</td>\n",
" <td>0.66</td>\n",
" <td>11.0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1599 rows × 12 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-82f28265-6529-4a21-a8af-2a743badf07d')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-82f28265-6529-4a21-a8af-2a743badf07d 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-82f28265-6529-4a21-a8af-2a743badf07d');\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",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 8
}
],
"source": [
"wine"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7b1ce5ff",
"metadata": {
"id": "7b1ce5ff",
"outputId": "02502c70-990c-48a5-e6e0-6039ea8390c2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" fixed acidity volatile acidity citric acid residual sugar chlorides \\\n",
"0 7.4 0.70 0.00 1.9 0.076 \n",
"1 7.8 0.88 0.00 2.6 0.098 \n",
"2 7.8 0.76 0.04 2.3 0.092 \n",
"3 11.2 0.28 0.56 1.9 0.075 \n",
"4 7.4 0.70 0.00 1.9 0.076 \n",
"\n",
" free sulfur dioxide total sulfur dioxide density pH sulphates \\\n",
"0 11.0 34.0 0.9978 3.51 0.56 \n",
"1 25.0 67.0 0.9968 3.20 0.68 \n",
"2 15.0 54.0 0.9970 3.26 0.65 \n",
"3 17.0 60.0 0.9980 3.16 0.58 \n",
"4 11.0 34.0 0.9978 3.51 0.56 \n",
"\n",
" alcohol quality \n",
"0 9.4 5 \n",
"1 9.8 5 \n",
"2 9.8 5 \n",
"3 9.8 6 \n",
"4 9.4 5 "
],
"text/html": [
"\n",
" <div id=\"df-8068ac47-054b-4fb0-b676-9a876e9d7b72\">\n",
" <div 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>fixed acidity</th>\n",
" <th>volatile acidity</th>\n",
" <th>citric acid</th>\n",
" <th>residual sugar</th>\n",
" <th>chlorides</th>\n",
" <th>free sulfur dioxide</th>\n",
" <th>total sulfur dioxide</th>\n",
" <th>density</th>\n",
" <th>pH</th>\n",
" <th>sulphates</th>\n",
" <th>alcohol</th>\n",
" <th>quality</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7.4</td>\n",
" <td>0.70</td>\n",
" <td>0.00</td>\n",
" <td>1.9</td>\n",
" <td>0.076</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>0.9978</td>\n",
" <td>3.51</td>\n",
" <td>0.56</td>\n",
" <td>9.4</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>7.8</td>\n",
" <td>0.88</td>\n",
" <td>0.00</td>\n",
" <td>2.6</td>\n",
" <td>0.098</td>\n",
" <td>25.0</td>\n",
" <td>67.0</td>\n",
" <td>0.9968</td>\n",
" <td>3.20</td>\n",
" <td>0.68</td>\n",
" <td>9.8</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>7.8</td>\n",
" <td>0.76</td>\n",
" <td>0.04</td>\n",
" <td>2.3</td>\n",
" <td>0.092</td>\n",
" <td>15.0</td>\n",
" <td>54.0</td>\n",
" <td>0.9970</td>\n",
" <td>3.26</td>\n",
" <td>0.65</td>\n",
" <td>9.8</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11.2</td>\n",
" <td>0.28</td>\n",
" <td>0.56</td>\n",
" <td>1.9</td>\n",
" <td>0.075</td>\n",
" <td>17.0</td>\n",
" <td>60.0</td>\n",
" <td>0.9980</td>\n",
" <td>3.16</td>\n",
" <td>0.58</td>\n",
" <td>9.8</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>7.4</td>\n",
" <td>0.70</td>\n",
" <td>0.00</td>\n",
" <td>1.9</td>\n",
" <td>0.076</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>0.9978</td>\n",
" <td>3.51</td>\n",
" <td>0.56</td>\n",
" <td>9.4</td>\n",
" <td>5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-8068ac47-054b-4fb0-b676-9a876e9d7b72')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-8068ac47-054b-4fb0-b676-9a876e9d7b72 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-8068ac47-054b-4fb0-b676-9a876e9d7b72');\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",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 9
}
],
"source": [
"wine.head() #To show first five rows"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9df1127e",
"metadata": {
"id": "9df1127e",
"outputId": "6232a63d-621a-4b14-a59a-7bbdb9df0b81",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" fixed acidity volatile acidity citric acid residual sugar chlorides \\\n",
"1594 6.2 0.600 0.08 2.0 0.090 \n",
"1595 5.9 0.550 0.10 2.2 0.062 \n",
"1596 6.3 0.510 0.13 2.3 0.076 \n",
"1597 5.9 0.645 0.12 2.0 0.075 \n",
"1598 6.0 0.310 0.47 3.6 0.067 \n",
"\n",
" free sulfur dioxide total sulfur dioxide density pH sulphates \\\n",
"1594 32.0 44.0 0.99490 3.45 0.58 \n",
"1595 39.0 51.0 0.99512 3.52 0.76 \n",
"1596 29.0 40.0 0.99574 3.42 0.75 \n",
"1597 32.0 44.0 0.99547 3.57 0.71 \n",
"1598 18.0 42.0 0.99549 3.39 0.66 \n",
"\n",
" alcohol quality \n",
"1594 10.5 5 \n",
"1595 11.2 6 \n",
"1596 11.0 6 \n",
"1597 10.2 5 \n",
"1598 11.0 6 "
],
"text/html": [
"\n",
" <div id=\"df-b4da5c40-1d83-484a-8003-084c57df3e8a\">\n",
" <div 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>fixed acidity</th>\n",
" <th>volatile acidity</th>\n",
" <th>citric acid</th>\n",
" <th>residual sugar</th>\n",
" <th>chlorides</th>\n",
" <th>free sulfur dioxide</th>\n",
" <th>total sulfur dioxide</th>\n",
" <th>density</th>\n",
" <th>pH</th>\n",
" <th>sulphates</th>\n",
" <th>alcohol</th>\n",
" <th>quality</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1594</th>\n",
" <td>6.2</td>\n",
" <td>0.600</td>\n",
" <td>0.08</td>\n",
" <td>2.0</td>\n",
" <td>0.090</td>\n",
" <td>32.0</td>\n",
" <td>44.0</td>\n",
" <td>0.99490</td>\n",
" <td>3.45</td>\n",
" <td>0.58</td>\n",
" <td>10.5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1595</th>\n",
" <td>5.9</td>\n",
" <td>0.550</td>\n",
" <td>0.10</td>\n",
" <td>2.2</td>\n",
" <td>0.062</td>\n",
" <td>39.0</td>\n",
" <td>51.0</td>\n",
" <td>0.99512</td>\n",
" <td>3.52</td>\n",
" <td>0.76</td>\n",
" <td>11.2</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1596</th>\n",
" <td>6.3</td>\n",
" <td>0.510</td>\n",
" <td>0.13</td>\n",
" <td>2.3</td>\n",
" <td>0.076</td>\n",
" <td>29.0</td>\n",
" <td>40.0</td>\n",
" <td>0.99574</td>\n",
" <td>3.42</td>\n",
" <td>0.75</td>\n",
" <td>11.0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1597</th>\n",
" <td>5.9</td>\n",
" <td>0.645</td>\n",
" <td>0.12</td>\n",
" <td>2.0</td>\n",
" <td>0.075</td>\n",
" <td>32.0</td>\n",
" <td>44.0</td>\n",
" <td>0.99547</td>\n",
" <td>3.57</td>\n",
" <td>0.71</td>\n",
" <td>10.2</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1598</th>\n",
" <td>6.0</td>\n",
" <td>0.310</td>\n",
" <td>0.47</td>\n",
" <td>3.6</td>\n",
" <td>0.067</td>\n",
" <td>18.0</td>\n",
" <td>42.0</td>\n",
" <td>0.99549</td>\n",
" <td>3.39</td>\n",
" <td>0.66</td>\n",
" <td>11.0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b4da5c40-1d83-484a-8003-084c57df3e8a')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-b4da5c40-1d83-484a-8003-084c57df3e8a 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-b4da5c40-1d83-484a-8003-084c57df3e8a');\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",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 10
}
],
"source": [
"wine.tail() #To show last five rows"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "106b0588",
"metadata": {
"id": "106b0588",
"outputId": "ebd1c579-ede0-48b8-9198-9a09ffd23914",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" fixed acidity volatile acidity citric acid residual sugar \\\n",
"count 1599.000000 1599.000000 1599.000000 1599.000000 \n",
"mean 8.319637 0.527821 0.270976 2.538806 \n",
"std 1.741096 0.179060 0.194801 1.409928 \n",
"min 4.600000 0.120000 0.000000 0.900000 \n",
"25% 7.100000 0.390000 0.090000 1.900000 \n",
"50% 7.900000 0.520000 0.260000 2.200000 \n",
"75% 9.200000 0.640000 0.420000 2.600000 \n",
"max 15.900000 1.580000 1.000000 15.500000 \n",
"\n",
" chlorides free sulfur dioxide total sulfur dioxide density \\\n",
"count 1599.000000 1599.000000 1599.000000 1599.000000 \n",
"mean 0.087467 15.874922 46.467792 0.996747 \n",
"std 0.047065 10.460157 32.895324 0.001887 \n",
"min 0.012000 1.000000 6.000000 0.990070 \n",
"25% 0.070000 7.000000 22.000000 0.995600 \n",
"50% 0.079000 14.000000 38.000000 0.996750 \n",
"75% 0.090000 21.000000 62.000000 0.997835 \n",
"max 0.611000 72.000000 289.000000 1.003690 \n",
"\n",
" pH sulphates alcohol quality \n",
"count 1599.000000 1599.000000 1599.000000 1599.000000 \n",
"mean 3.311113 0.658149 10.422983 5.636023 \n",
"std 0.154386 0.169507 1.065668 0.807569 \n",
"min 2.740000 0.330000 8.400000 3.000000 \n",
"25% 3.210000 0.550000 9.500000 5.000000 \n",
"50% 3.310000 0.620000 10.200000 6.000000 \n",
"75% 3.400000 0.730000 11.100000 6.000000 \n",
"max 4.010000 2.000000 14.900000 8.000000 "
],
"text/html": [
"\n",
" <div id=\"df-c840c838-45db-46b8-9f34-98f340b081e2\">\n",
" <div 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>fixed acidity</th>\n",
" <th>volatile acidity</th>\n",
" <th>citric acid</th>\n",
" <th>residual sugar</th>\n",
" <th>chlorides</th>\n",
" <th>free sulfur dioxide</th>\n",
" <th>total sulfur dioxide</th>\n",
" <th>density</th>\n",
" <th>pH</th>\n",
" <th>sulphates</th>\n",
" <th>alcohol</th>\n",
" <th>quality</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" <td>1599.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>8.319637</td>\n",
" <td>0.527821</td>\n",
" <td>0.270976</td>\n",
" <td>2.538806</td>\n",
" <td>0.087467</td>\n",
" <td>15.874922</td>\n",
" <td>46.467792</td>\n",
" <td>0.996747</td>\n",
" <td>3.311113</td>\n",
" <td>0.658149</td>\n",
" <td>10.422983</td>\n",
" <td>5.636023</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1.741096</td>\n",
" <td>0.179060</td>\n",
" <td>0.194801</td>\n",
" <td>1.409928</td>\n",
" <td>0.047065</td>\n",
" <td>10.460157</td>\n",
" <td>32.895324</td>\n",
" <td>0.001887</td>\n",
" <td>0.154386</td>\n",
" <td>0.169507</td>\n",
" <td>1.065668</td>\n",
" <td>0.807569</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>4.600000</td>\n",
" <td>0.120000</td>\n",
" <td>0.000000</td>\n",
" <td>0.900000</td>\n",
" <td>0.012000</td>\n",
" <td>1.000000</td>\n",
" <td>6.000000</td>\n",
" <td>0.990070</td>\n",
" <td>2.740000</td>\n",
" <td>0.330000</td>\n",
" <td>8.400000</td>\n",
" <td>3.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>7.100000</td>\n",
" <td>0.390000</td>\n",
" <td>0.090000</td>\n",
" <td>1.900000</td>\n",
" <td>0.070000</td>\n",
" <td>7.000000</td>\n",
" <td>22.000000</td>\n",
" <td>0.995600</td>\n",
" <td>3.210000</td>\n",
" <td>0.550000</td>\n",
" <td>9.500000</td>\n",
" <td>5.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>7.900000</td>\n",
" <td>0.520000</td>\n",
" <td>0.260000</td>\n",
" <td>2.200000</td>\n",
" <td>0.079000</td>\n",
" <td>14.000000</td>\n",
" <td>38.000000</td>\n",
" <td>0.996750</td>\n",
" <td>3.310000</td>\n",
" <td>0.620000</td>\n",
" <td>10.200000</td>\n",
" <td>6.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>9.200000</td>\n",
" <td>0.640000</td>\n",
" <td>0.420000</td>\n",
" <td>2.600000</td>\n",
" <td>0.090000</td>\n",
" <td>21.000000</td>\n",
" <td>62.000000</td>\n",
" <td>0.997835</td>\n",
" <td>3.400000</td>\n",
" <td>0.730000</td>\n",
" <td>11.100000</td>\n",
" <td>6.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>15.900000</td>\n",
" <td>1.580000</td>\n",
" <td>1.000000</td>\n",
" <td>15.500000</td>\n",
" <td>0.611000</td>\n",
" <td>72.000000</td>\n",
" <td>289.000000</td>\n",
" <td>1.003690</td>\n",
" <td>4.010000</td>\n",
" <td>2.000000</td>\n",
" <td>14.900000</td>\n",
" <td>8.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c840c838-45db-46b8-9f34-98f340b081e2')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-c840c838-45db-46b8-9f34-98f340b081e2 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-c840c838-45db-46b8-9f34-98f340b081e2');\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",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 11
}
],
"source": [
"wine.describe() #Summary descriptive statistics based solely on numerical numbers"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "30e512ae",
"metadata": {
"id": "30e512ae",
"outputId": "b051cd12-1cab-4b83-ef84-1d02959f9b80",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar',\n",
" 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density',\n",
" 'pH', 'sulphates', 'alcohol', 'quality'],\n",
" dtype='object')"
]
},
"metadata": {},
"execution_count": 12
}
],
"source": [
"wine.columns #To check all columns in the file"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d468db29",
"metadata": {
"id": "d468db29",
"outputId": "2958bb35-bf28-4f08-9cfe-ceb0fa4d3eb2",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"fixed acidity float64\n",
"volatile acidity float64\n",
"citric acid float64\n",
"residual sugar float64\n",
"chlorides float64\n",
"free sulfur dioxide float64\n",
"total sulfur dioxide float64\n",
"density float64\n",
"pH float64\n",
"sulphates float64\n",
"alcohol float64\n",
"quality int64\n",
"dtype: object"
]
},
"metadata": {},
"execution_count": 13
}
],
"source": [
"wine.dtypes"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c1a05015",
"metadata": {
"id": "c1a05015",
"outputId": "a98f2357-b3e7-44c0-8271-634a40fbdc48",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 1599 entries, 0 to 1598\n",
"Data columns (total 12 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 fixed acidity 1599 non-null float64\n",
" 1 volatile acidity 1599 non-null float64\n",
" 2 citric acid 1599 non-null float64\n",
" 3 residual sugar 1599 non-null float64\n",
" 4 chlorides 1599 non-null float64\n",
" 5 free sulfur dioxide 1599 non-null float64\n",
" 6 total sulfur dioxide 1599 non-null float64\n",
" 7 density 1599 non-null float64\n",
" 8 pH 1599 non-null float64\n",
" 9 sulphates 1599 non-null float64\n",
" 10 alcohol 1599 non-null float64\n",
" 11 quality 1599 non-null int64 \n",
"dtypes: float64(11), int64(1)\n",
"memory usage: 150.0 KB\n"
]
}
],
"source": [
"# Check the number and types of the columns\n",
"wine.info()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4c329d60",
"metadata": {
"id": "4c329d60",
"outputId": "0220534b-ff3b-47fe-faa2-83acc1eb0d79",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"fixed acidity 96\n",
"volatile acidity 143\n",
"citric acid 80\n",
"residual sugar 91\n",
"chlorides 153\n",
"free sulfur dioxide 60\n",
"total sulfur dioxide 144\n",
"density 436\n",
"pH 89\n",
"sulphates 96\n",
"alcohol 65\n",
"quality 6\n",
"dtype: int64"
]
},
"metadata": {},
"execution_count": 15
}
],
"source": [
"wine.nunique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ca62b9f5",
"metadata": {
"id": "ca62b9f5",
"outputId": "d4a765e3-6bee-4399-a026-72d411f49ba7",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 7.4, 7.8, 11.2, 7.9, 7.3, 7.5, 6.7, 5.6, 8.9, 8.5, 8.1,\n",
" 7.6, 6.9, 6.3, 7.1, 8.3, 5.2, 5.7, 8.8, 6.8, 4.6, 7.7,\n",
" 8.7, 6.4, 6.6, 8.6, 10.2, 7. , 7.2, 9.3, 8. , 9.7, 6.2,\n",
" 5. , 4.7, 8.4, 10.1, 9.4, 9. , 8.2, 6.1, 5.8, 9.2, 11.5,\n",
" 5.4, 9.6, 12.8, 11. , 11.6, 12. , 15. , 10.8, 11.1, 10. , 12.5,\n",
" 11.8, 10.9, 10.3, 11.4, 9.9, 10.4, 13.3, 10.6, 9.8, 13.4, 10.7,\n",
" 11.9, 12.4, 12.2, 13.8, 9.1, 13.5, 10.5, 12.6, 14. , 13.7, 9.5,\n",
" 12.7, 12.3, 15.6, 5.3, 11.3, 13. , 6.5, 12.9, 14.3, 15.5, 11.7,\n",
" 13.2, 15.9, 12.1, 5.1, 4.9, 5.9, 6. , 5.5])"
]
},
"metadata": {},
"execution_count": 16
}
],
"source": [
"wine['fixed acidity'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e948921a",
"metadata": {
"id": "e948921a",
"outputId": "2fa4ca02-f14f-4359-aed2-a862e7844f6e",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0.7 , 0.88 , 0.76 , 0.28 , 0.66 , 0.6 , 0.65 , 0.58 , 0.5 ,\n",
" 0.615, 0.61 , 0.62 , 0.56 , 0.59 , 0.32 , 0.22 , 0.39 , 0.43 ,\n",
" 0.49 , 0.4 , 0.41 , 0.71 , 0.645, 0.675, 0.685, 0.655, 0.605,\n",
" 0.38 , 1.13 , 0.45 , 0.67 , 0.52 , 0.935, 0.29 , 0.31 , 0.51 ,\n",
" 0.42 , 0.63 , 0.69 , 0.735, 0.725, 0.705, 0.785, 0.75 , 0.625,\n",
" 0.3 , 0.55 , 1.02 , 0.775, 0.9 , 0.545, 0.575, 0.33 , 0.54 ,\n",
" 1.07 , 0.695, 1.33 , 0.745, 1.04 , 0.715, 0.415, 0.34 , 0.68 ,\n",
" 0.95 , 0.53 , 0.64 , 0.885, 0.805, 0.73 , 0.37 , 0.835, 1.09 ,\n",
" 0.57 , 0.44 , 0.635, 0.82 , 0.48 , 1. , 0.21 , 0.35 , 0.975,\n",
" 0.26 , 0.87 , 0.18 , 0.27 , 0.2 , 0.36 , 0.83 , 0.46 , 0.47 ,\n",
" 0.77 , 0.815, 0.795, 0.665, 0.765, 0.24 , 0.85 , 0.84 , 0.96 ,\n",
" 0.78 , 0.23 , 0.315, 0.365, 0.25 , 0.825, 0.72 , 0.595, 0.585,\n",
" 0.915, 0.755, 0.845, 1.24 , 0.8 , 0.98 , 1.185, 0.92 , 1.035,\n",
" 1.025, 0.565, 0.74 , 1.115, 0.865, 0.875, 0.965, 0.91 , 0.89 ,\n",
" 1.01 , 0.305, 0.395, 0.12 , 0.86 , 0.295, 1.005, 0.19 , 0.955,\n",
" 0.16 , 1.58 , 0.79 , 1.18 , 0.475, 0.81 , 0.895, 0.855])"
]
},
"metadata": {},
"execution_count": 17
}
],
"source": [
"wine['volatile acidity'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "14c13218",
"metadata": {
"id": "14c13218",
"outputId": "40b79126-3fff-42f0-9e51-730f8ff8577b",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0. , 0.04, 0.56, 0.06, 0.02, 0.36, 0.08, 0.29, 0.18, 0.19, 0.28,\n",
" 0.51, 0.48, 0.31, 0.21, 0.11, 0.14, 0.16, 0.24, 0.07, 0.12, 0.25,\n",
" 0.09, 0.3 , 0.2 , 0.22, 0.15, 0.43, 0.52, 0.23, 0.37, 0.26, 0.57,\n",
" 0.4 , 0.49, 0.05, 0.54, 0.64, 0.7 , 0.47, 0.44, 0.17, 0.68, 0.53,\n",
" 0.1 , 0.01, 0.55, 1. , 0.03, 0.42, 0.33, 0.32, 0.35, 0.6 , 0.74,\n",
" 0.58, 0.5 , 0.76, 0.46, 0.45, 0.38, 0.39, 0.66, 0.62, 0.67, 0.79,\n",
" 0.63, 0.61, 0.71, 0.65, 0.59, 0.34, 0.69, 0.73, 0.72, 0.41, 0.27,\n",
" 0.75, 0.13, 0.78])"
]
},
"metadata": {},
"execution_count": 18
}
],
"source": [
"wine['citric acid'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ae75070a",
"metadata": {
"id": "ae75070a",
"outputId": "8bb1e10b-7a65-4d6b-fdd6-a328fa6a758b",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 1.9 , 2.6 , 2.3 , 1.8 , 1.6 , 1.2 , 2. , 6.1 , 3.8 ,\n",
" 3.9 , 1.7 , 4.4 , 2.4 , 1.4 , 2.5 , 10.7 , 5.5 , 2.1 ,\n",
" 1.5 , 5.9 , 2.8 , 2.2 , 3. , 3.4 , 5.1 , 4.65, 1.3 ,\n",
" 7.3 , 7.2 , 2.9 , 2.7 , 5.6 , 3.1 , 3.2 , 3.3 , 3.6 ,\n",
" 4. , 7. , 6.4 , 3.5 , 11. , 3.65, 4.5 , 4.8 , 2.95,\n",
" 5.8 , 6.2 , 4.2 , 7.9 , 3.7 , 6.7 , 6.6 , 2.15, 5.2 ,\n",
" 2.55, 15.5 , 4.1 , 8.3 , 6.55, 4.6 , 4.3 , 5.15, 6.3 ,\n",
" 6. , 8.6 , 7.5 , 2.25, 4.25, 2.85, 3.45, 2.35, 2.65,\n",
" 9. , 8.8 , 5. , 1.65, 2.05, 0.9 , 8.9 , 8.1 , 4.7 ,\n",
" 1.75, 7.8 , 12.9 , 13.4 , 5.4 , 15.4 , 3.75, 13.8 , 5.7 ,\n",
" 13.9 ])"
]
},
"metadata": {},
"execution_count": 19
}
],
"source": [
"wine['residual sugar'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5364e010",
"metadata": {
"id": "5364e010",
"outputId": "45c6687b-bb81-4257-9c0b-f9e8f3f75726",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0.076, 0.098, 0.092, 0.075, 0.069, 0.065, 0.073, 0.071, 0.097,\n",
" 0.089, 0.114, 0.176, 0.17 , 0.368, 0.086, 0.341, 0.077, 0.082,\n",
" 0.106, 0.084, 0.085, 0.08 , 0.105, 0.083, 0.103, 0.066, 0.172,\n",
" 0.074, 0.088, 0.332, 0.05 , 0.054, 0.113, 0.068, 0.081, 0.11 ,\n",
" 0.07 , 0.111, 0.079, 0.115, 0.094, 0.093, 0.104, 0.464, 0.401,\n",
" 0.062, 0.107, 0.045, 0.058, 0.102, 0.467, 0.091, 0.122, 0.09 ,\n",
" 0.119, 0.178, 0.146, 0.072, 0.118, 0.049, 0.06 , 0.117, 0.087,\n",
" 0.236, 0.61 , 0.095, 0.1 , 0.36 , 0.067, 0.27 , 0.099, 0.046,\n",
" 0.061, 0.056, 0.039, 0.059, 0.101, 0.057, 0.337, 0.078, 0.263,\n",
" 0.063, 0.611, 0.064, 0.096, 0.358, 0.343, 0.186, 0.112, 0.213,\n",
" 0.214, 0.121, 0.128, 0.052, 0.12 , 0.116, 0.109, 0.159, 0.124,\n",
" 0.174, 0.047, 0.127, 0.413, 0.152, 0.053, 0.055, 0.051, 0.125,\n",
" 0.2 , 0.171, 0.226, 0.25 , 0.108, 0.148, 0.143, 0.222, 0.157,\n",
" 0.422, 0.034, 0.387, 0.415, 0.243, 0.241, 0.19 , 0.132, 0.126,\n",
" 0.038, 0.044, 0.041, 0.165, 0.048, 0.145, 0.147, 0.012, 0.194,\n",
" 0.161, 0.123, 0.414, 0.216, 0.043, 0.042, 0.369, 0.166, 0.136,\n",
" 0.403, 0.137, 0.168, 0.153, 0.267, 0.169, 0.205, 0.235, 0.23 ])"
]
},
"metadata": {},
"execution_count": 20
}
],
"source": [
"wine['chlorides'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "69cdc587",
"metadata": {
"id": "69cdc587",
"outputId": "3f608dcc-9b63-451c-be4b-ebc1cce27292",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([11. , 25. , 15. , 17. , 13. , 9. , 16. , 52. , 51. , 35. , 6. ,\n",
" 29. , 23. , 10. , 21. , 4. , 14. , 8. , 22. , 40. , 5. , 3. ,\n",
" 7. , 12. , 30. , 33. , 50. , 19. , 20. , 27. , 18. , 28. , 34. ,\n",
" 42. , 41. , 37. , 32. , 36. , 24. , 26. , 39. , 40.5, 68. , 31. ,\n",
" 38. , 43. , 47. , 1. , 54. , 46. , 45. , 2. , 5.5, 53. , 37.5,\n",
" 57. , 48. , 72. , 55. , 66. ])"
]
},
"metadata": {},
"execution_count": 21
}
],
"source": [
"wine['free sulfur dioxide'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8be73bef",
"metadata": {
"id": "8be73bef",
"outputId": "760e810a-07ef-44b7-ace3-255173ef1655",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 34. , 67. , 54. , 60. , 40. , 59. , 21. , 18. , 102. ,\n",
" 65. , 29. , 145. , 148. , 103. , 56. , 71. , 37. , 23. ,\n",
" 11. , 35. , 16. , 82. , 113. , 83. , 50. , 15. , 30. ,\n",
" 19. , 87. , 46. , 14. , 114. , 12. , 96. , 119. , 73. ,\n",
" 45. , 10. , 110. , 52. , 112. , 39. , 27. , 94. , 43. ,\n",
" 42. , 80. , 51. , 61. , 136. , 31. , 125. , 24. , 140. ,\n",
" 133. , 85. , 106. , 22. , 36. , 69. , 64. , 153. , 47. ,\n",
" 108. , 111. , 62. , 28. , 89. , 13. , 90. , 134. , 99. ,\n",
" 26. , 63. , 105. , 20. , 141. , 88. , 129. , 128. , 86. ,\n",
" 121. , 101. , 44. , 8. , 49. , 38. , 143. , 144. , 127. ,\n",
" 126. , 120. , 55. , 93. , 95. , 41. , 58. , 72. , 81. ,\n",
" 109. , 33. , 53. , 98. , 48. , 70. , 25. , 135. , 92. ,\n",
" 74. , 32. , 77. , 165. , 75. , 124. , 78. , 122. , 66. ,\n",
" 68. , 17. , 91. , 76. , 151. , 142. , 116. , 149. , 57. ,\n",
" 104. , 84. , 147. , 155. , 152. , 9. , 139. , 130. , 7. ,\n",
" 100. , 115. , 6. , 79. , 278. , 289. , 160. , 77.5, 131. ])"
]
},
"metadata": {},
"execution_count": 22
}
],
"source": [
"wine['total sulfur dioxide'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "22197520",
"metadata": {
"id": "22197520",
"outputId": "af9df218-9401-474e-99e1-78f73fadcd38",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0.9978 , 0.9968 , 0.997 , 0.998 , 0.9964 , 0.9946 , 0.9959 ,\n",
" 0.9943 , 0.9974 , 0.9986 , 0.9969 , 0.9982 , 0.9966 , 0.9955 ,\n",
" 0.9962 , 0.9972 , 0.9958 , 0.9993 , 0.9957 , 0.9975 , 0.994 ,\n",
" 0.9976 , 0.9934 , 0.9954 , 0.9971 , 0.9956 , 0.9983 , 0.9967 ,\n",
" 0.9961 , 0.9984 , 0.9938 , 0.9932 , 0.9965 , 0.9963 , 0.996 ,\n",
" 0.9973 , 0.9988 , 0.9937 , 0.9952 , 0.9916 , 0.9944 , 0.9996 ,\n",
" 0.995 , 0.9981 , 0.9953 , 0.9924 , 0.9948 , 0.99695, 0.99545,\n",
" 0.99615, 0.9994 , 0.99625, 0.99585, 0.99685, 0.99655, 0.99525,\n",
" 0.99815, 0.99745, 0.9927 , 0.99675, 0.99925, 0.99565, 1.00005,\n",
" 0.9985 , 0.99965, 0.99575, 0.9999 , 1.00025, 0.9987 , 0.99935,\n",
" 0.99735, 0.99915, 0.9991 , 1.00015, 0.9997 , 1.001 , 0.9979 ,\n",
" 1.0014 , 1.0001 , 0.99855, 0.99845, 0.9998 , 0.99645, 0.99865,\n",
" 0.9989 , 0.99975, 0.999 , 1.0015 , 1.0002 , 0.9992 , 1.0008 ,\n",
" 1. , 1.0006 , 1.0004 , 1.0018 , 0.9912 , 1.0022 , 1.0003 ,\n",
" 0.9949 , 0.9951 , 1.0032 , 0.9947 , 0.9995 , 0.9977 , 1.0026 ,\n",
" 1.00315, 1.0021 , 0.9917 , 0.9922 , 0.9921 , 0.99788, 1.00024,\n",
" 0.99768, 0.99782, 0.99761, 0.99803, 0.99785, 0.99656, 0.99488,\n",
" 0.99823, 0.99779, 0.99738, 0.99701, 0.99888, 0.99938, 0.99744,\n",
" 0.99668, 0.99727, 0.99586, 0.99612, 0.99676, 0.99732, 0.99814,\n",
" 0.99746, 0.99708, 0.99818, 0.99639, 0.99531, 0.99786, 0.99526,\n",
" 0.99641, 0.99264, 0.99682, 0.99356, 0.99386, 0.99702, 0.99693,\n",
" 0.99562, 1.00012, 0.99462, 0.99939, 0.99632, 0.99976, 0.99606,\n",
" 0.99154, 0.99624, 0.99417, 0.99376, 0.99832, 0.99836, 0.99694,\n",
" 0.99064, 0.99672, 0.99647, 0.99736, 0.99629, 0.99689, 0.99801,\n",
" 0.99652, 0.99538, 0.99594, 0.99686, 0.99438, 0.99357, 0.99628,\n",
" 0.99748, 0.99578, 0.99371, 0.99522, 0.99576, 0.99552, 0.99664,\n",
" 0.99614, 0.99517, 0.99787, 0.99533, 0.99536, 0.99824, 0.99577,\n",
" 0.99491, 1.00289, 0.99743, 0.99774, 0.99444, 0.99892, 0.99528,\n",
" 0.99331, 0.99901, 0.99674, 0.99512, 0.99395, 0.99504, 0.99516,\n",
" 0.99604, 0.99468, 0.99543, 0.99791, 0.99425, 0.99509, 0.99484,\n",
" 0.99834, 0.99864, 0.99498, 0.99566, 0.99408, 0.99458, 0.99648,\n",
" 0.99568, 0.99613, 0.99519, 0.99518, 0.99592, 0.99654, 0.99546,\n",
" 0.99554, 0.99733, 0.99669, 0.99724, 0.99643, 0.99605, 0.99658,\n",
" 0.99416, 0.99712, 0.99418, 0.99596, 0.99556, 0.99918, 0.99697,\n",
" 0.99378, 0.99162, 0.99495, 0.9928 , 0.99603, 0.99549, 0.99722,\n",
" 0.99354, 0.99635, 0.99454, 0.99598, 0.99486, 0.99007, 0.99636,\n",
" 0.99642, 0.99584, 0.99506, 0.99822, 0.99364, 0.99514, 0.99854,\n",
" 0.99739, 0.99683, 0.99692, 0.99756, 0.99547, 0.99859, 0.99294,\n",
" 0.99634, 0.99704, 0.99258, 0.99426, 0.99747, 0.99784, 0.99358,\n",
" 0.99572, 0.99769, 0.99534, 0.99817, 0.99316, 0.99471, 0.99617,\n",
" 0.99529, 0.99451, 0.99479, 0.99772, 0.99666, 0.99392, 0.99388,\n",
" 0.99402, 0.9936 , 0.99374, 0.99523, 0.99593, 0.99396, 0.99698,\n",
" 0.9902 , 0.99252, 0.99256, 0.99235, 0.99352, 0.99557, 0.99394,\n",
" 0.9915 , 0.99379, 0.99798, 0.99341, 0.9933 , 0.99684, 0.99524,\n",
" 0.99764, 0.99588, 0.99473, 0.99616, 0.99622, 0.99544, 0.99728,\n",
" 0.99551, 0.99434, 0.99709, 0.99384, 0.99502, 0.99667, 0.99649,\n",
" 0.99716, 0.99541, 0.99318, 0.99346, 0.99599, 0.99478, 0.99754,\n",
" 0.99439, 0.99633, 0.99419, 0.99878, 0.99752, 0.99428, 0.99659,\n",
" 0.99677, 0.99734, 0.99678, 0.99638, 0.99922, 0.99157, 0.99718,\n",
" 0.99621, 0.99242, 0.99494, 0.99729, 0.99414, 0.99721, 0.99627,\n",
" 0.99569, 0.99499, 0.99437, 0.99726, 0.99456, 0.99564, 0.9908 ,\n",
" 0.99084, 0.9935 , 0.99385, 0.99688, 0.99619, 0.99476, 0.99328,\n",
" 0.99286, 0.99914, 0.99521, 0.99362, 0.99558, 0.99323, 0.99191,\n",
" 0.99501, 0.9929 , 0.99532, 0.99796, 0.99581, 0.99608, 0.99387,\n",
" 0.99448, 0.99589, 0.99852, 0.99472, 0.99587, 0.99332, 0.99464,\n",
" 0.99699, 0.99725, 0.99623, 0.99609, 0.99292, 0.9942 , 1.00369,\n",
" 0.99713, 0.99322, 0.99706, 0.99974, 0.99467, 0.99236, 0.99705,\n",
" 0.99334, 0.99336, 1.00242, 0.99182, 0.99808, 0.99828, 0.99719,\n",
" 0.99542, 0.99496, 0.99344, 0.99348, 0.99459, 0.99492, 0.99508,\n",
" 0.99582, 0.99555, 0.9941 , 0.99661, 0.99842, 0.99489, 0.99665,\n",
" 0.99553, 0.99714, 0.99631, 0.99573, 0.99717, 0.99397, 0.99646,\n",
" 0.99758, 0.99306, 0.99783, 0.99765, 0.99474, 0.99483, 0.99314,\n",
" 0.99574, 0.99651])"
]
},
"metadata": {},
"execution_count": 23
}
],
"source": [
"wine['density'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b7f630f5",
"metadata": {
"id": "b7f630f5",
"outputId": "49c0f7d5-fdd6-4130-b2e8-495a06bf4502",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([3.51, 3.2 , 3.26, 3.16, 3.3 , 3.39, 3.36, 3.35, 3.28, 3.58, 3.17,\n",
" 3.11, 3.38, 3.04, 3.52, 3.43, 3.34, 3.47, 3.46, 3.45, 3.4 , 3.42,\n",
" 3.23, 3.5 , 3.33, 3.21, 3.48, 3.9 , 3.25, 3.32, 3.15, 3.41, 3.44,\n",
" 3.31, 3.54, 3.13, 2.93, 3.14, 3.75, 3.85, 3.29, 3.08, 3.37, 3.19,\n",
" 3.07, 3.49, 3.53, 3.24, 3.63, 3.22, 3.68, 2.74, 3.59, 3. , 3.12,\n",
" 3.57, 3.61, 3.06, 3.6 , 3.69, 3.1 , 3.05, 3.67, 3.27, 3.18, 3.02,\n",
" 3.55, 2.99, 3.01, 3.56, 3.03, 3.62, 2.88, 2.95, 2.98, 3.09, 2.86,\n",
" 3.74, 2.92, 3.72, 2.87, 2.89, 2.94, 3.66, 3.71, 3.78, 3.7 , 4.01,\n",
" 2.9 ])"
]
},
"metadata": {},
"execution_count": 24
}
],
"source": [
"wine['pH'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c7839a45",
"metadata": {
"id": "c7839a45",
"outputId": "076c1d78-6cfc-431f-ce17-1920f349c390",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0.56, 0.68, 0.65, 0.58, 0.46, 0.47, 0.57, 0.8 , 0.54, 0.52, 1.56,\n",
" 0.88, 0.93, 0.75, 1.28, 0.5 , 1.08, 0.53, 0.91, 0.63, 0.59, 0.55,\n",
" 0.66, 0.6 , 0.73, 0.48, 0.83, 0.51, 0.9 , 1.2 , 0.74, 0.64, 0.77,\n",
" 0.71, 0.62, 0.39, 0.79, 0.95, 0.82, 1.12, 1.14, 0.78, 1.95, 1.22,\n",
" 1.98, 0.61, 1.31, 0.69, 0.67, 0.7 , 0.49, 0.92, 2. , 0.72, 1.59,\n",
" 0.33, 1.02, 0.97, 0.85, 0.43, 1.03, 0.86, 0.76, 1.61, 1.09, 0.84,\n",
" 0.96, 0.45, 1.26, 0.87, 0.81, 1. , 1.36, 1.18, 0.89, 0.98, 1.13,\n",
" 1.04, 1.11, 0.99, 1.07, 0.44, 1.06, 1.05, 0.42, 1.17, 1.62, 0.94,\n",
" 1.34, 1.16, 1.1 , 0.4 , 1.15, 0.37, 1.33, 1.01])"
]
},
"metadata": {},
"execution_count": 25
}
],
"source": [
"wine['sulphates'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "be6eb1e6",
"metadata": {
"id": "be6eb1e6",
"outputId": "c4529536-e26d-4c11-a245-6a5367b35a3d",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 9.4 , 9.8 , 10. , 9.5 , 10.5 ,\n",
" 9.2 , 9.9 , 9.1 , 9.3 , 9. ,\n",
" 9.7 , 10.1 , 10.6 , 9.6 , 10.8 ,\n",
" 10.3 , 13.1 , 10.2 , 10.9 , 10.7 ,\n",
" 12.9 , 10.4 , 13. , 14. , 11.5 ,\n",
" 11.4 , 12.4 , 11. , 12.2 , 12.8 ,\n",
" 12.6 , 12.5 , 11.7 , 11.3 , 12.3 ,\n",
" 12. , 11.9 , 11.8 , 8.7 , 13.3 ,\n",
" 11.2 , 11.6 , 11.1 , 13.4 , 12.1 ,\n",
" 8.4 , 12.7 , 14.9 , 13.2 , 13.6 ,\n",
" 13.5 , 10.03333333, 9.55 , 8.5 , 11.06666667,\n",
" 9.56666667, 10.55 , 8.8 , 13.56666667, 11.95 ,\n",
" 9.95 , 9.23333333, 9.25 , 9.05 , 10.75 ])"
]
},
"metadata": {},
"execution_count": 26
}
],
"source": [
"wine['alcohol'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d35f9024",
"metadata": {
"id": "d35f9024",
"outputId": "80cc43ad-3066-4573-d2a0-9f291334d8e3",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([5, 6, 7, 4, 8, 3])"
]
},
"metadata": {},
"execution_count": 27
}
],
"source": [
"wine['quality'].unique()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8de1ca67",
"metadata": {
"id": "8de1ca67",
"outputId": "e63f881b-4c7b-4845-d1e7-de233442abd4",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"5 681\n",
"6 638\n",
"7 199\n",
"4 53\n",
"8 18\n",
"3 10\n",
"Name: quality, dtype: int64"
]
},
"metadata": {},
"execution_count": 28
}
],
"source": [
"# Get actual qualities of the wines\n",
"wine['quality'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0359a759",
"metadata": {
"id": "0359a759",
"outputId": "427126a3-da33-44b0-d72a-dc6a5badb863",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"count 1599.000000\n",
"mean 5.636023\n",
"std 0.807569\n",
"min 3.000000\n",
"25% 5.000000\n",
"50% 6.000000\n",
"75% 6.000000\n",
"max 8.000000\n",
"Name: quality, dtype: float64"
]
},
"metadata": {},
"execution_count": 29
}
],
"source": [
"wine['quality'].describe()"
]
},
{
"cell_type": "markdown",
"id": "4ea88a2b",
"metadata": {
"id": "4ea88a2b"
},
"source": [
"# Step 4: Cleaning data"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "214b9463",
"metadata": {
"id": "214b9463",
"outputId": "e5a6e401-3a90-45aa-d545-c66029a3b651",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"fixed acidity 0\n",
"volatile acidity 0\n",
"citric acid 0\n",
"residual sugar 0\n",
"chlorides 0\n",
"free sulfur dioxide 0\n",
"total sulfur dioxide 0\n",
"density 0\n",
"pH 0\n",
"sulphates 0\n",
"alcohol 0\n",
"quality 0\n",
"dtype: int64"
]
},
"metadata": {},
"execution_count": 251
}
],
"source": [
"wine.apply(lambda x: sum(x.isnull()),axis=0)"
]
},
{
"cell_type": "markdown",
"id": "88e79d2a",
"metadata": {
"id": "88e79d2a"
},
"source": [
"# Step 5: Split data"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "352153e1",
"metadata": {
"id": "352153e1"
},
"outputs": [],
"source": [
"wine['good wine'] = ['1' if i > 6 else '0' for i in wine['quality']]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0521a912",
"metadata": {
"id": "0521a912",
"outputId": "886f9b9e-3526-46f8-a2a0-9dbf0a2dbac7",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 1382\n",
"1 217\n",
"Name: good wine, dtype: int64"
]
},
"metadata": {},
"execution_count": 32
}
],
"source": [
"wine['good wine'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a2babc08",
"metadata": {
"id": "a2babc08",
"outputId": "95ea9492-38fb-4832-caa2-fec08c6799c3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" fixed acidity volatile acidity citric acid residual sugar chlorides \\\n",
"0 7.4 0.700 0.00 1.9 0.076 \n",
"1 7.8 0.880 0.00 2.6 0.098 \n",
"2 7.8 0.760 0.04 2.3 0.092 \n",
"3 11.2 0.280 0.56 1.9 0.075 \n",
"4 7.4 0.700 0.00 1.9 0.076 \n",
"... ... ... ... ... ... \n",
"1594 6.2 0.600 0.08 2.0 0.090 \n",
"1595 5.9 0.550 0.10 2.2 0.062 \n",
"1596 6.3 0.510 0.13 2.3 0.076 \n",
"1597 5.9 0.645 0.12 2.0 0.075 \n",
"1598 6.0 0.310 0.47 3.6 0.067 \n",
"\n",
" free sulfur dioxide total sulfur dioxide density pH sulphates \\\n",
"0 11.0 34.0 0.99780 3.51 0.56 \n",
"1 25.0 67.0 0.99680 3.20 0.68 \n",
"2 15.0 54.0 0.99700 3.26 0.65 \n",
"3 17.0 60.0 0.99800 3.16 0.58 \n",
"4 11.0 34.0 0.99780 3.51 0.56 \n",
"... ... ... ... ... ... \n",
"1594 32.0 44.0 0.99490 3.45 0.58 \n",
"1595 39.0 51.0 0.99512 3.52 0.76 \n",
"1596 29.0 40.0 0.99574 3.42 0.75 \n",
"1597 32.0 44.0 0.99547 3.57 0.71 \n",
"1598 18.0 42.0 0.99549 3.39 0.66 \n",
"\n",
" alcohol quality good wine \n",
"0 9.4 5 0 \n",
"1 9.8 5 0 \n",
"2 9.8 5 0 \n",
"3 9.8 6 0 \n",
"4 9.4 5 0 \n",
"... ... ... ... \n",
"1594 10.5 5 0 \n",
"1595 11.2 6 0 \n",
"1596 11.0 6 0 \n",
"1597 10.2 5 0 \n",
"1598 11.0 6 0 \n",
"\n",
"[1599 rows x 13 columns]"
],
"text/html": [
"\n",
" <div id=\"df-1a455204-628e-4b9e-86d6-a5957455d13c\">\n",
" <div 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>fixed acidity</th>\n",
" <th>volatile acidity</th>\n",
" <th>citric acid</th>\n",
" <th>residual sugar</th>\n",
" <th>chlorides</th>\n",
" <th>free sulfur dioxide</th>\n",
" <th>total sulfur dioxide</th>\n",
" <th>density</th>\n",
" <th>pH</th>\n",
" <th>sulphates</th>\n",
" <th>alcohol</th>\n",
" <th>quality</th>\n",
" <th>good wine</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7.4</td>\n",
" <td>0.700</td>\n",
" <td>0.00</td>\n",
" <td>1.9</td>\n",
" <td>0.076</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>0.99780</td>\n",
" <td>3.51</td>\n",
" <td>0.56</td>\n",
" <td>9.4</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>7.8</td>\n",
" <td>0.880</td>\n",
" <td>0.00</td>\n",
" <td>2.6</td>\n",
" <td>0.098</td>\n",
" <td>25.0</td>\n",
" <td>67.0</td>\n",
" <td>0.99680</td>\n",
" <td>3.20</td>\n",
" <td>0.68</td>\n",
" <td>9.8</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>7.8</td>\n",
" <td>0.760</td>\n",
" <td>0.04</td>\n",
" <td>2.3</td>\n",
" <td>0.092</td>\n",
" <td>15.0</td>\n",
" <td>54.0</td>\n",
" <td>0.99700</td>\n",
" <td>3.26</td>\n",
" <td>0.65</td>\n",
" <td>9.8</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11.2</td>\n",
" <td>0.280</td>\n",
" <td>0.56</td>\n",
" <td>1.9</td>\n",
" <td>0.075</td>\n",
" <td>17.0</td>\n",
" <td>60.0</td>\n",
" <td>0.99800</td>\n",
" <td>3.16</td>\n",
" <td>0.58</td>\n",
" <td>9.8</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>7.4</td>\n",
" <td>0.700</td>\n",
" <td>0.00</td>\n",
" <td>1.9</td>\n",
" <td>0.076</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>0.99780</td>\n",
" <td>3.51</td>\n",
" <td>0.56</td>\n",
" <td>9.4</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1594</th>\n",
" <td>6.2</td>\n",
" <td>0.600</td>\n",
" <td>0.08</td>\n",
" <td>2.0</td>\n",
" <td>0.090</td>\n",
" <td>32.0</td>\n",
" <td>44.0</td>\n",
" <td>0.99490</td>\n",
" <td>3.45</td>\n",
" <td>0.58</td>\n",
" <td>10.5</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1595</th>\n",
" <td>5.9</td>\n",
" <td>0.550</td>\n",
" <td>0.10</td>\n",
" <td>2.2</td>\n",
" <td>0.062</td>\n",
" <td>39.0</td>\n",
" <td>51.0</td>\n",
" <td>0.99512</td>\n",
" <td>3.52</td>\n",
" <td>0.76</td>\n",
" <td>11.2</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1596</th>\n",
" <td>6.3</td>\n",
" <td>0.510</td>\n",
" <td>0.13</td>\n",
" <td>2.3</td>\n",
" <td>0.076</td>\n",
" <td>29.0</td>\n",
" <td>40.0</td>\n",
" <td>0.99574</td>\n",
" <td>3.42</td>\n",
" <td>0.75</td>\n",
" <td>11.0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1597</th>\n",
" <td>5.9</td>\n",
" <td>0.645</td>\n",
" <td>0.12</td>\n",
" <td>2.0</td>\n",
" <td>0.075</td>\n",
" <td>32.0</td>\n",
" <td>44.0</td>\n",
" <td>0.99547</td>\n",
" <td>3.57</td>\n",
" <td>0.71</td>\n",
" <td>10.2</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1598</th>\n",
" <td>6.0</td>\n",
" <td>0.310</td>\n",
" <td>0.47</td>\n",
" <td>3.6</td>\n",
" <td>0.067</td>\n",
" <td>18.0</td>\n",
" <td>42.0</td>\n",
" <td>0.99549</td>\n",
" <td>3.39</td>\n",
" <td>0.66</td>\n",
" <td>11.0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1599 rows × 13 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-1a455204-628e-4b9e-86d6-a5957455d13c')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-1a455204-628e-4b9e-86d6-a5957455d13c 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-1a455204-628e-4b9e-86d6-a5957455d13c');\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",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 33
}
],
"source": [
"wine"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5bc9c7cd",
"metadata": {
"id": "5bc9c7cd"
},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a444cdbb",
"metadata": {
"id": "a444cdbb",
"outputId": "054a8e8b-0b83-49bc-8810-5a0145ce32cd",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(959, 13)\n",
"(640, 13)\n"
]
}
],
"source": [
"train_set, test_set = train_test_split(wine, test_size=0.40,random_state=152)\n",
"print(train_set.shape)\n",
"print(test_set.shape)"
]
},
{
"cell_type": "markdown",
"id": "1ac2e8d4",
"metadata": {
"id": "1ac2e8d4"
},
"source": [
"# Step 6: Features selection"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1645bc64",
"metadata": {
"id": "1645bc64",
"outputId": "6758b16e-2850-4e93-8047-5dc59c71312a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 697
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"# Set the size of the figure\n",
"plt.subplots(figsize = (10, 10))\n",
"\n",
"# Get the correlation between the features\n",
"sns.heatmap(wine[wine.columns].corr(),\n",
" cmap = \"Greens\",\n",
" annot = True,\n",
" linewidths = 1)\n",
"\n",
"# Set the title\n",
"plt.title('Correlation of the features', fontsize = 21)\n",
"\n",
"# Show the correlation graph\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "53b3310e",
"metadata": {
"id": "53b3310e",
"outputId": "b3346dd4-15a9-4639-cf93-5a6d308157d1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 299
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEaCAYAAAD+E0veAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3debgcVZnH8e+PLAhICJBrxCTDjUNEcQO8IiowQEQF0YAL4igEBo0KMoLboMw4MKOOjo4LIxMnghIUkUWQwOCCQAQUIgk7BCVCAolALlvYhcA7f5zTlUqn7719l+q+yf19nqefrj51uurtrup665xaWhGBmZkZwEbtDsDMzIYPJwUzMys4KZiZWcFJwczMCk4KZmZWcFIwM7OCk0IvJM2XtLTdcYxkkjaVdJKkuyU9t74tD0mHSQpJe5bK9sxlhzU5jc5c/4SKwhxSko6UdLukv+a4Owc4naWS5g9pcBXZkLYVIyIplH6En+mlTki6aIjmt6OkEwb6Y7C1/BNwNHAWcBhwTF9vkLSRpJmSLpP0YN443S3pdEmvqTjeAckb/hMk7djuWAZD0l7AycDtwMeAQ4DuXuof02xytNYY3e4Ahrm3AhrA+3YE/hWYDywdwnhGon2AmyPis81UlrQZcH5+3wLgq8BDwMuAw4G/l3RkRMypKN5mXAFsAjxbKuskrTNLgRvq6i/L9Ve3ILbB2ic//0NEPNRE/WNIn/m0qgJqkYFuK4YdJ4VeRMQz7Y5hsCRtHhGPtTuOQXgxcHc/6n+PtGH6SkQcXx4h6evApcBsSUsi4rKhC7N5EfE88HQ/6kd/6rfZiwGaTAgbjA1hW1GIiA3+AewJBPCZXuoEcFFd2XxgaV3ZK4FzgBXAX4H7gMuBd+TxJ+Rp1T9OK01jAqmJfQ/wTH4+Gdi6QVydwM+AR/PjAmAqae9qfoPPcBowHbgKeLxWB3gJ8F+kvdCHSRuZ20jdM6PqpnNYntZ04IukPdWnSHveu+Y6f5fn8QRwL/Av/Vgeo/N8b8txPEjau391gxjqHyf0Mt3X5DrXAOqhziuB54Fr677jhtMuLc/OUtnLgf8BbgUeA54EFgEfbvD+2ufYs8H6eFgfn3V+E/G9Py+HWhwLgPc2qPcO4LfAA3lZ3g2cB7ysyWV2APC7vLwfz8MzGnyHDT9DL7+5Ro/OPH4p6Tf4cuD/8mdcBZwLvLjB9LYAvgYsIf02u4EzgZc28flm5nnvVSobkz9rADuVyjcntfJm97GtmJ8/w0tyHA/nZfSrRt87sDHwhbxePQ08AlxYnneutxGphXVT/k4eBf4InAqMafZ32NNjpLUUNpU0YaBvlrQ1UNu7/B5pYzkB6ALeQFpxzwO2AWYBXwEW5/p/ztPYAvg9sB3wA+A6YCfg48DeknaJvGef53clMDHPbzGwOykJbdZDmF3Ae4DvA3NL5a8B3k3a+P6ZtMK/ndS98lLgow2m9VVgFPAdYCzwaeDXkg4lrYBzgDOAg4B/k3RXRPy4h7jKau+5BJhN2rs8Crha0u4RcT2pi+UQ4FukDdmX83tv6mW678nPp0T+9dSLiFslXQ28SdLfRER/WiE1ewJ7ABcBd5GWxfuA70vqiIj/6Of0riCtK18gfadX5vL7e3uTpC8BxwO/BP6FlOwOBM6R9ImIODnX+ztgHnAL8B+kjc1LgLeQ1sM/9TGfI1lznODfcvFhwM8lfTRSV1w3aXnNIq2jhzTxGRotX1j7GMQk0sb1fOCzwGtJ6+o4UpdNLcba7+pvSL+rW0m/wyOBBZK6ImJZL7HUftd7k35fkH7Tm5G+172B63P5HqQdm2ZampuRlu81pOU7FfgkcIGkV0XEczn+MaTl+CbgR8B3SUnuI8DvJO0REQvzNI8nLYcLSduF5/J030VKLOVuyf4bbFZZHx6s2TPr69FrSyF/6QEc1Mf8DqNu77A07st53JF15Ufl8n8vlf1nLvtgXd1a+fy68trneEuD+W5Cg73nvAI+B2zTIP7rgLENPv+zQFepfCyptXB1E8tinzyNs8rxkH7sq4Er6+ovrf+cvUz7Z3naO/dR76Rcb//8upP+tRQ2a1Bvo7y+rKK0t9ZoXaCupdBTWWncOvEBO+eyrzSo/3PS3uPm+fU3c90XDeC3syVpb3kJMK5UPo60c/EYML5Ufhq5x6vJ6fe4fPO4dX5vpAQVwPalsu+QWkCvrau7bf4uTmsiljuA35Vef5GUoH4BXFwq/y9SophQKptP45ZCAJ+rK/9sLn9bqezY+rLS93x3+Tsi/S5v6++ybPYxIs4+KplD2ig1ejRjVX7eV9K4AcZwIGlFqz/Q+b+5/MBS2TtJG9sz6+p+o5fp3xgRv6kvjIinIq9RksZK2iq3mn5F2qB1NZjW7Fi7r7S2B7sg1uy1kOv8AZjWS1w1tc/35Vo8eRo3kvZ8dpPU0cR0Gqktk1W91kobCUjdAP0WEU/UhiW9ILfotgJ+nWN4+UCm208fJG1E5kqaUH6QWgWbA2/MdWvfx3sk9bd3YB/S3u5JEVH73sjDJwEvJLU4qvKXiDi7rqy2hz4NQJJI38cVwIq67+IJ0l76W+nbZcDrJb0wv661Gn4D7J735gH2Ip388EAT03ye9D31GH/2IVJLbFFd/GNJLerdJG2S664CJknarYn599tI6z66o9EGEyCtV72LiN9KOp209/dBSdeSVpizIuK2JmOYCiyMiLXOJImI1ZL+RNoDLNf9Q6QDk+W6KyU90sP0G3YF5I3BccChpC6D+g+8ZYO33Vk334fz93RXg7oPA1v3EFPZVNIPZXGDcbeS+q6n0stpjL2obbS26KNeLXn02j3Tk7zROIHUBTalQZVG3+VQewVpGd7eS52J+fm7wAzScZCvSbqK1FVxZkT09T1Pzc+3NhhXK3tpUxEPzJ0Nyh7Mz7X1rSMPv5We15vneygvu4zc/ZWvj9iV1He/gLQjtoukxaRWbf2Gvid/iYj6kwTq44e0PDeh9/V+Aun44xdIrcErJf2F1CL5P+DcGIID3iMtKQxaRMzMZ7HsS+o7/TRwvKRjIuK77Y0OSAeyGvkma873/zKwktQNtDPp4FyjVuNzPUyrp/J2u4V03GRnUhO7J7XEuyQ/Nzz+kDX6jfwE2J/U2ruC9CN/DtiP1A3Qiha4SHHvS8/L41aAiHhQ0utJ6+s+pD7xbwEnStovIq5uQbwD1du6prrn35DW5YG6nPSd7k36bWxMShR3kE5rnk5KtBvR3PEEaC7+2vDNwKd6qd8NEBFXS/pb4G2kVstewN8D/yxptxjkmV9OCgMQEbeQNkBflzSefD68pJNzl0hvG5k7ge0ljS63FvKe/MtYe89oKbCdpI3KrQVJLwLG9zPsQ4ArIuLgcqGk7fo5ncG6k/SjegXrHjTeIT83aok042ekfuAjJJ1a7p6qkbQD6WDelbHmIHPtR7RVg2mutRecl/f+wI8i4mN14wbTjdLbOtPIHaQTBe6OiEatrrUnng5ozs8P8kV8i4B/Jp2Z1JPa+vhK0um8ZTvU1RmI/n7uRrpJB8/H9dQT0FQgqQV+K2njvxpYHhF/ApB0eS7vIG3ofzvoqNd2R572ZfU9Az3E+jhpff9Zjq92MsARwNcHE8hIO6YwKLkffq3vLCIeIW3ENgVekIsfz8+NNjI/Jy38D9eVfySXn18qu5B0BsUH6ur2eGV2L56jrssoX+h17ACmNRg/z8+fV6nPTtKrSAeyr2qiS6OhiLgJ+DGp2X9C/XhJW+Xxz5MuFKu97zHSqcV718X0UlJ3Vlltz6/+u9yGdZdpf/S2zjTyo/z8FUmj6kdKmlgabnTG3e2kA7N9ze8SUr/80ZKKYzB5+Ogc9yVNxtzI403E0Ku8ET2D1L3z3kZ18o5UMy4jdQ8dyNqtgctI69W+wKLy8ZUhcjrpLLyGLYUmlmetZTyo7xLcUuivQ4FjJZ1P6np4lnS+/tuAsyPiqVzvWtKG53hJW5J+VHdFxALSmUPvA06WtDPpNLedSBn+j3l8zddIzcIfStqF9EPenbSn+wD928s6F/iopLNIzeyJwD+wpn+zJSLiEklnAwcDWyrdWqR2SurTwD8OchYfJ322L0rah3SKcPmK5vHAxyLi8rr3fRf4EvALST8nnbL5MVKL8PWl+B+T9GvgQ5KeIi3rbUmnSd5Fc8dVGrmNdCbPkZKeJO35roweLrCLiGuV7oV0AnCDpHOAv5B2Il5H6soam6t/X9Jk0oHw2tXR7ycdjD69t6Ai4hFJnyPthS6QdFoedRjp2NRHI6KvA/u9uYbUsvt30nGm54ELywfzm3Q88Gbg7Lx+XUO6Bmhb0nexKMfcl8tI6+D2pNN3y+Vjgb8lXac01L5D6tr7uqS98/weJZ1iO53029gr110s6RpSD0Vtmc8ifd6fDjqSqk5rGk4PhujiNdLtK+aSEsITeaHdSDqusHHde2eSfujPsO7Fax2kg37LSYllOelHN6FBXFNJG7baRSq1i9ceoHSaXOkznNbD59uU1KxcllewO0gHnqez7umRh9HzKbUN50E/TkVkzcVri0kXGT1EakG8ukHdpTR5SmrpPaPyZ7g8T7vWpfdUo3mUYvpP0tleT5P2vN5J41NSJwCnkH6QT5P6gj/S6Hvroay2Ph5WF8N+eb5P0/zFa+8gnUH2UP4u7yGdQvmxUp13k85IWs6ai7p+C7ynH9/pgaTrAJ7Ij98DBwxmPcj1X0TqAnmIlBCK77qnZd/L97cp6XqNm/OyfiyvY98H3tBkPONJXUcBTKkbtyKX79PgffPp4eK1BnUbLs+8Dv4jaUej9j3fQWoFvbVU7zjSsayVpWV+Dn2cit3sQ3kmth7Jp0A+APxv1PVrW2NKN0P8OinBvj/qzv4ys8THFIa50rnJZcfl58H05Y4oEfEN0l7ku0nn9nvdN2vALYVhLp/1sIzUrbARqbtnf1LzfY/Il8mbmQ0FJ4VhTtKnSQe4O0kHCJeTukBOjPX77qdmNgw5KZiZWWG9PiV1woQJ0dnZ2e4wzMzWK4sWLXogIhreY2y9TgqdnZ0sXLiw74pmZlaQ1ONtxCs7A0PS9pJuKD0eVfo/1q0kXSLpjvy8Za4vpT9oXyLppnxhl5mZtVBlSSEi/hgRO0bEjqQrLJ8k3cLhOODSiJhGupdK7fTKfUm3kp1GujpvdlWxmZlZY606V3s68OdI/3w0gzX/CDaXNfeWmQGcHsk1wPh8PxkzM2uRViWFg1nzRzETI+LePHwfa+75Pol0uXbN8ly2FkmzJC2UtLC7e0D3TTMzsx5UnhQkjSXd/XKdm0hFOh+2X+fERsSciOiKiK6OjoH+QZeZmTXSipbCvsB1EVH7l6v7a91C+XllLl/B2v9iNTmXmZlZi7QiKXyAtf9jeB7pDqLk5wtK5Yfms5B2BVaVupnMzKwFKr1OIf+Jyz6ke83XfJV0z/MjSPf0OSiXX0y6dfAS0plKh1cZm5mZravSpBDpjzK2rit7kHQ2Un3dIP3RipmZtYlvH2wbtM4pnUgaUY/OKZ3t/tptPbZe3+bCrC/Lli/j0blD/Xe6w9u4mePaHYKtx9xSMDOzgpOCmZkVnBTMzKzgpGBmZgUnBTMzKzgpmJlZwUnBzMwKTgpmZlZwUjAzs4KTgpmZFZwUzMys4HsfmW1gxmw0BkntDqOltp28LUvvWdruMDYITgpmG5hnn3/WNwG0AXP3kZmZFZwUzMys4KRgZmYFJwUzMys4KZiZWcFJwczMCpUmBUnjJZ0r6XZJiyW9UdJWki6RdEd+3jLXlaSTJC2RdJOknauMzczM1lV1S+E7wC8j4uXAa4HFwHHApRExDbg0vwbYF5iWH7OA2RXHZmZmdSpLCpK2APYATgWIiGci4hFgBjA3V5sLHJCHZwCnR3INMF7SNlXFZ2Zm66qypTAV6AZ+KOl6SadI2gyYGBH35jr3ARPz8CTgntL7l+eytUiaJWmhpIXd3d0Vhm9mNvJUmRRGAzsDsyNiJ+AJ1nQVARARAUR/JhoRcyKiKyK6Ojo6hixYMzOrNiksB5ZHxIL8+lxSkri/1i2Un1fm8SuAKaX3T85lZmbWIpUlhYi4D7hH0va5aDpwGzAPmJnLZgIX5OF5wKH5LKRdgVWlbiYzM2uBqu+SejRwhqSxwJ3A4aREdLakI4BlwEG57sXAfsAS4Mlc18zMWqjSpBARNwBdDUZNb1A3gKOqjMfMzHrnK5rNzKzgpGBmZgUnBTMzKzgpmJlZwUnBzMwKTgpmZlZwUjAzs4KTgpmZFZwUzMys4KRgZmYFJwUzMys4KZiZWcFJwczMCk4KZmZWcFIwM7OCk4KZmRWcFMzMrOCkYGZmBScFMzMrOCmYmVnBScHMzApOCmZmVqg0KUhaKulmSTdIWpjLtpJ0iaQ78vOWuVySTpK0RNJNknauMjYzM1tXK1oKe0XEjhHRlV8fB1waEdOAS/NrgH2BafkxC5jdgtjMzKykHd1HM4C5eXgucECp/PRIrgHGS9qmDfGZmY1YVSeFAH4taZGkWblsYkTcm4fvAybm4UnAPaX3Ls9la5E0S9JCSQu7u7uritvMbEQaXfH0d4uIFZJeBFwi6fbyyIgISdGfCUbEHGAOQFdXV7/ea2Zmvau0pRARK/LzSuB8YBfg/lq3UH5emauvAKaU3j45l5mZWYtUlhQkbSZp89ow8FbgFmAeMDNXmwlckIfnAYfms5B2BVaVupnMzKwFquw+mgicL6k2n59ExC8lXQucLekIYBlwUK5/MbAfsAR4Eji8wtjMzKyBypJCRNwJvLZB+YPA9AblARxVVTxmZtY3X9FsZmYFJwUzMys4KZiZWcFJwczMCk4KZmZWcFIwM7OCk4KZmRWcFMzMrOCkYGZmBScFMzMrOCmYmVnBScHMzApOCmZmVnBSMDOzgpOCmZkVnBTMzKzgpGBmZgUnBTMzKzgpmJlZwUnBzMwKTgpmZlaoPClIGiXpekkX5ddTJS2QtETSWZLG5vKN8+sleXxn1bGZmdnaWtFS+CSwuPT6a8C3ImI74GHgiFx+BPBwLv9WrmdmZi1UaVKQNBl4B3BKfi1gb+DcXGUucEAenpFfk8dPz/XNzKxFqm4pfBv4HPB8fr018EhErM6vlwOT8vAk4B6APH5Vrr8WSbMkLZS0sLu7u8rYzcxGnKaSgqQ3N1NWN35/YGVELBpgbA1FxJyI6IqIro6OjqGctJnZiNdsS+G/mywrezPwLklLgZ+Suo2+A4yXNDrXmQysyMMrgCkAefwWwINNxmdmZkNgdG8jJb0ReBPQIelTpVHjgFG9vTciPg98Pk9nT+AzEfFBSecA7yUlipnABfkt8/Lrq/P4yyIi+vuBzMxs4PpqKYwFXkhKHpuXHo+SNtwD8U/ApyQtIR0zODWXnwpsncs/BRw3wOmbmdkA9dpSiIjfAr+VdFpELBvoTCJiPjA/D98J7NKgztPA+wY6DzMzG7xek0LJxpLmAJ3l90TE3lUEZWZm7dFsUjgH+B7peoPnqgvHzMzaqdmksDoiZlcaiZmZtV2zp6ReKOlISdtI2qr2qDQyMzNruWZbCjPz82dLZQG8dGjDMTOzdmoqKUTE1KoDMTOz9msqKUg6tFF5RJw+tOGYmVk7Ndt99PrS8AuA6cB1gJOCmdkGpNnuo6PLryWNJ92mwszMNiADvXX2E4CPM5iZbWCaPaZwIelsI0g3wnsFcHZVQZmZWXs0e0zhG6Xh1cCyiFheQTxmZtZGTXUf5Rvj3U66Q+qWwDNVBmVmZu3R7D+vHQT8gXQX04OABZIGeutsMzMbpprtPjoeeH1ErASQ1AH8Bji3qsDMzKz1mj37aKNaQsge7Md7zcxsPdFsS+GXkn4FnJlfvx+4uJqQzMysXfr6j+btgIkR8VlJ7wZ2y6OuBs6oOjgzM2utvloK3wY+DxAR5wHnAUh6dR73zkqjMzOzlurruMDEiLi5vjCXdVYSkZmZtU1fSWF8L+M2GcpAzMys/fpKCgslfaS+UNKHgUW9vVHSCyT9QdKNkm6VdGIunyppgaQlks6SNDaXb5xfL8njOwf2kczMbKD6OqZwDHC+pA+yJgl0AWOBA/t471+BvSPicUljgKsk/QL4FPCtiPippO8BRwCz8/PDEbGdpIOBr5HOcjIzsxbptaUQEfdHxJuAE4Gl+XFiRLwxIu7r470REY/nl2PyI4C9WXPR21zggDw8I78mj58uSf36NGZmNijN/p/C5cDl/Z24pFGkFsZ2wMnAn4FHImJ1rrIcmJSHJwH35PmtlrQK2Bp4oL/zNTOzgan0quSIeC4idgQmA7sALx/sNCXNkrRQ0sLu7u5Bx2hmZmu05FYVEfEIqaXxRmC8pFoLZTKwIg+vAKYA5PFbkG6nUT+tORHRFRFdHR0dlcduZjaSVJYUJHXkv+1E0ibAPsBiUnKo3WF1JnBBHp6XX5PHXxYRgZmZtUyz9z4aiG2Aufm4wkbA2RFxkaTbgJ9K+hJwPXBqrn8q8CNJS4CHgIMrjM3MzBqoLClExE3ATg3K7yQdX6gvf5r0fw1mZtYmvv21mZkVnBTMzKzgpGBmZgUnBTMzKzgpmJlZwUnBzMwKTgpmZlZwUjAzs4KTgpmZFZwUzMys4KRgZmYFJwUzMys4KZiZWcFJwczMCk4KZmZWcFIwM7OCk4KZmRWcFMzMrOCkYGZmBScFMzMrjG53AGZmgzVmozFIancYLbXt5G1Zes/SIZ+uk4KZrfeeff5ZHp37aLvDaKlxM8dVMt3Kuo8kTZF0uaTbJN0q6ZO5fCtJl0i6Iz9vmcsl6SRJSyTdJGnnqmIzM7PGqjymsBr4dETsAOwKHCVpB+A44NKImAZcml8D7AtMy49ZwOwKYzMzswYqSwoRcW9EXJeHHwMWA5OAGcDcXG0ucEAengGcHsk1wHhJ21QVn5mZraslZx9J6gR2AhYAEyPi3jzqPmBiHp4E3FN62/JcVj+tWZIWSlrY3d1dWcxmZiNR5UlB0guBnwHHRMRaR4IiIoDoz/QiYk5EdEVEV0dHxxBGamZmlSYFSWNICeGMiDgvF99f6xbKzytz+QpgSuntk3OZmZm1SJVnHwk4FVgcEd8sjZoHzMzDM4ELSuWH5rOQdgVWlbqZzMysBaq8TuHNwCHAzZJuyGVfAL4KnC3pCGAZcFAedzGwH7AEeBI4vMLYzMysgcqSQkRcBfR0ieH0BvUDOKqqeMzMrG++95GZmRWcFMzMrOCkYGZmBScFMzMrOCmYmVnBScHMzApOCmZmVnBSMDOzgpOCmZkVnBTMzKzgpGBmZgUnBTMzKzgpmJlZwUnBzMwKTgpmZlZwUjAzs4KTgpmZFZwUzMys4KRgZmYFJwUzMys4KZiZWaGypCDpB5JWSrqlVLaVpEsk3ZGft8zlknSSpCWSbpK0c1VxmZlZz6psKZwGvL2u7Djg0oiYBlyaXwPsC0zLj1nA7ArjMjOzHlSWFCLiCuChuuIZwNw8PBc4oFR+eiTXAOMlbVNVbGZm1lirjylMjIh78/B9wMQ8PAm4p1RveS5bh6RZkhZKWtjd3V1dpGZmI1DbDjRHRAAxgPfNiYiuiOjq6OioIDIzs5Gr1Unh/lq3UH5emctXAFNK9SbnMjMza6FWJ4V5wMw8PBO4oFR+aD4LaVdgVambyczMWmR0VROWdCawJzBB0nLgX4GvAmdLOgJYBhyUq18M7AcsAZ4EDq8qLjMz61llSSEiPtDDqOkN6gZwVFWxmJlZc3xFs5mZFZwUzMys4KRgZmYFJwUzMys4KZiZWcFJwczMCk4KZmZWcFIwM7OCk4KZmRUqu6LZhp/OKZ0sW76s3WGY2TDmpDCCLFu+jEfnPtruMFpq3Mxx7Q7BbL3i7iMzMys4KZiZWcFJwczMCk4KZmZWcFIwM7OCk4KZmRWcFMzMrOCkYGZmBScFMzMrOCmYmVnBScHMzArDKilIerukP0paIum4KufVOaUTSSPqYWbWl2FzQzxJo4CTgX2A5cC1kuZFxG1VzM83hzMzW9dwainsAiyJiDsj4hngp8CMNsdkZjaiKCLaHQMAkt4LvD0iPpxfHwK8ISI+UVdvFjArv9we+OMAZzkBeGCA711f+TOPDP7MI8NgPvO2EdHRaMSw6T5qVkTMAeYMdjqSFkZE1xCEtN7wZx4Z/JlHhqo+83DqPloBTCm9npzLzMysRYZTUrgWmCZpqqSxwMHAvDbHZGY2ogyb7qOIWC3pE8CvgFHADyLi1gpnOeguqPWQP/PI4M88MlTymYfNgWYzM2u/4dR9ZGZmbeakYGZmhRGXFCS9QNIfJN0o6VZJJ7Y7plaQNErS9ZIuancsrSJpqaSbJd0gaWG746mapPGSzpV0u6TFkt7Y7piqJGn7vGxrj0clHdPuuKom6di87bpF0pmSXjCk0x9pxxSUbgK0WUQ8LmkMcBXwyYi4ps2hVUrSp4AuYFxE7N/ueFpB0lKgKyJGxEVNkuYCV0bEKfkMvk0j4pF2x9UK+TY5K0gXvC5rdzxVkTSJtM3aISKeknQ2cHFEnDZU8xhxLYVIHs8vx+THBp0ZJU0G3gGc0u5YrBqStgD2AE4FiIhnRkpCyKYDf96QE0LJaGATSaOBTYG/DOXER1xSgKIr5QZgJXBJRCxod0wV+zbwOeD5dgfSYgH8WtKifHuUDdlUoBv4Ye4mPEXSZu0OqoUOBs5sdxBVi4gVwDeAu4F7gVUR8euhnMeITAoR8VxE7Ei6anoXSa9qd0xVkbQ/sDIiFrU7ljbYLSJ2BvYFjpK0R7sDqtBoYGdgdkTsBDwBVHr7+eEid5W9Czin3bFUTdKWpBuFTgVeAmwm6UNDOY8RmRRqcvP6cuDt7Y6lQm8G3pX7138K7C3px+0NqTXyXhURsRI4n3Qn3g3VcmB5qdV7LilJjAT7AtdFxP3tDqQF3gLcFRHdEfEscB7wpqGcwYhLCpI6JI3Pw5uQ/r/h9vZGVZ2I+HxETI6ITlIT+7KIGNI9i+FI0maSNq8NA28FbmlvVNWJiPuAeyRtn4umA5X8F8kw9AFGQNdRdjewq6RN80kz04HFQzmDYXObixbaBpibz1bYCDg7IkbMaZojyETg/PyPc6OBn0TEL9sbUuWOBs7I3YRuSwsAAAIDSURBVCl3Aoe3OZ7K5YS/D/DRdsfSChGxQNK5wHXAauB6hvh2FyPulFQzM+vZiOs+MjOznjkpmJlZwUnBzMwKTgpmZlZwUjAzs4KTglmFJHVKuiUPd0k6KQ/vKWlILzoyGwoj8ToFs7aIiIVA7RbeewKPA79vW0BmDbilYNYDScdL+pOkq/J96z8jab6krjx+Qr59SK1FcKWk6/JjnVZAbh1cJKkT+BhwbP4fgN0l3ZVv5Y6kceXXZq3kloJZA5JeR7otyI6k38l1QG83FVwJ7BMRT0uaRrrtQlejihGxVNL3gMcj4ht5fvNJtzf/eZ7vefneNmYt5ZaCWWO7A+dHxJMR8Sgwr4/6Y4DvS7qZdLfOHfo5v1NYc1uKw4Ef9vP9ZkPCLQWz/lnNmp2p8t8gHgvcD7w2j3+6PxONiN/lLqg9gVERscHevM+GN7cUzBq7AjhA0ib5bqvvzOVLgdfl4feW6m8B3BsRzwOHAKP6mP5jwOZ1ZacDP8GtBGsjJwWzBiLiOuAs4EbgF8C1edQ3gI9Luh6YUHrL/wAzJd0IvJz0Jze9uRA4sHagOZedAWzJyLkNtA1DvkuqWRMknUDpwHBF83gvMCMiDqlqHmZ98TEFs2FA0n+T/kFsv3bHYiObWwpmZlbwMQUzMys4KZiZWcFJwczMCk4KZmZWcFIwM7PC/wOVAFiM8nhPHwAAAABJRU5ErkJggg==\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"# Show the distribution of qualities of the wines\n",
"sns.histplot(data=wine['quality'], binwidth=1, color=\"violet\")\n",
"plt.title(\"Histogram of Qualities of the wines\", fontsize = 18)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "9e6af63d",
"metadata": {
"id": "9e6af63d"
},
"source": [
"# Step 7: Build model"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1fdf1546",
"metadata": {
"id": "1fdf1546"
},
"outputs": [],
"source": [
"#import the KNeighborsClasifier class from sklearn\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"#import the Decision Tree Classifier class from sklearn\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"\n",
"#import the SVC class from sklearn\n",
"from sklearn.svm import SVC\n",
"\n",
"# Get the most suitable value of parameter C\n",
"from sklearn.model_selection import GridSearchCV\n",
"from sklearn.metrics import accuracy_score, confusion_matrix, recall_score, precision_score, plot_confusion_matrix"
]
},
{
"cell_type": "markdown",
"id": "a8f27a92",
"metadata": {
"id": "a8f27a92"
},
"source": [
"## Model 1: KNN"
]
},
{
"cell_type": "markdown",
"id": "8eabb8a6",
"metadata": {
"id": "8eabb8a6"
},
"source": [
"### KNN Test 1"
]
},
{
"cell_type": "code",
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"parameters = {\"n_neighbors\": range(1,50),\n",
" \"weights\": [\"uniform\", \"distance\"]}\n",
"model1gs = GridSearchCV(KNeighborsClassifier(), parameters)\n",
"model1gs.fit(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine'])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bXLxEnYd6G9k",
"outputId": "632e4b95-dcba-4db3-d46e-8851c370f2e0"
},
"id": "bXLxEnYd6G9k",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"GridSearchCV(estimator=KNeighborsClassifier(),\n",
" param_grid={'n_neighbors': range(1, 50),\n",
" 'weights': ['uniform', 'distance']})"
]
},
"metadata": {},
"execution_count": 245
}
]
},
{
"cell_type": "code",
"source": [
"model1gs.best_params_"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fYNtNc02AWaG",
"outputId": "61a80014-e258-4a52-b25b-0af6ab6f163c"
},
"id": "fYNtNc02AWaG",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'n_neighbors': 23, 'weights': 'distance'}"
]
},
"metadata": {},
"execution_count": 246
}
]
},
{
"cell_type": "code",
"source": [
"best_k = model1gs.best_params_[\"n_neighbors\"]\n",
"best_weights = model1gs.best_params_[\"weights\"]\n",
"bagged_model1 = KNeighborsClassifier(\n",
" n_neighbors=best_k, weights=best_weights\n",
")"
],
"metadata": {
"id": "7Gb_pnQEJefm"
},
"id": "7Gb_pnQEJefm",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from sklearn.ensemble import BaggingClassifier\n",
"bagging_model1 = BaggingClassifier(bagged_model1, n_estimators=100)"
],
"metadata": {
"id": "5zAiwJOhZszX"
},
"id": "5zAiwJOhZszX",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"bagging_model1 = KNeighborsClassifier(n_neighbors=23,\n",
" weights='distance',\n",
" metric='euclidean'\n",
" )"
],
"metadata": {
"id": "KOupwdqjGVgQ"
},
"id": "KOupwdqjGVgQ",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"bagging_model1.fit(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine'])\n",
"prediction1_1 = bagging_model1.predict(test_set.drop(['quality', 'good wine'], axis = 1))\n",
"prediction1_1"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "4-ZwZin_DvO8",
"outputId": "dcb75f88-3597-48de-8578-458ed5b02d0b"
},
"id": "4-ZwZin_DvO8",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array(['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',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '1', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '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', '1', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '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', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '1', '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',\n",
" '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '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',\n",
" '0', '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '1', '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',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0'], dtype=object)"
]
},
"metadata": {},
"execution_count": 216
}
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aa64cf3f",
"metadata": {
"id": "aa64cf3f",
"outputId": "6962f84b-96ee-4090-b04d-7fff33461510",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Score the X-train with Y-train is : 1.0\n",
"Score the X-test with Y-test is : 0.8875\n",
"\n",
"Accuracy: 0.8875\n",
"Recall: 0.8875\n",
"Precision: 0.8786788617886179\n",
"\n",
"Confusion matrix: \n",
"[[548 5]\n",
" [ 67 20]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", bagging_model1.score(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", bagging_model1.score(test_set.drop(['quality', 'good wine'], axis = 1), test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'], prediction1_1))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction1_1, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction1_1, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction1_1)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1dc17ef1",
"metadata": {
"id": "1dc17ef1",
"outputId": "8cf1bef7-fe74-49c3-888e-7d9f3adb9977",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"plot_confusion_matrix(bagging_model1, test_set.drop(['quality', 'good wine'], axis = 1), test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "f7c0565e",
"metadata": {
"id": "f7c0565e"
},
"source": [
"### KNN Test 2"
]
},
{
"cell_type": "code",
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"parameters = {\"n_neighbors\": range(1,50),\n",
" \"weights\": [\"uniform\", \"distance\"]}\n",
"model1gs2 = GridSearchCV(KNeighborsClassifier(), parameters)\n",
"model1gs2.fit(train_set[['citric acid', 'sulphates', 'alcohol']], train_set['good wine'])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9evL9H8pdLjD",
"outputId": "4e5a9fc0-b8e5-4924-87a4-cbcb2e941bba"
},
"id": "9evL9H8pdLjD",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"GridSearchCV(estimator=KNeighborsClassifier(),\n",
" param_grid={'n_neighbors': range(1, 50),\n",
" 'weights': ['uniform', 'distance']})"
]
},
"metadata": {},
"execution_count": 219
}
]
},
{
"cell_type": "code",
"source": [
"model1gs2.best_params_"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bLYZyZdYdxe2",
"outputId": "9c3a05b6-c94a-4da4-ab98-8eec63f52cc2"
},
"id": "bLYZyZdYdxe2",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'n_neighbors': 25, 'weights': 'distance'}"
]
},
"metadata": {},
"execution_count": 220
}
]
},
{
"cell_type": "code",
"source": [
"best_k = model1gs2.best_params_[\"n_neighbors\"]\n",
"best_weights = model1gs2.best_params_[\"weights\"]\n",
"bagged_model1_2 = KNeighborsClassifier(\n",
" n_neighbors=best_k, weights=best_weights\n",
")"
],
"metadata": {
"id": "7SbJ4wV-dxvy"
},
"id": "7SbJ4wV-dxvy",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from sklearn.ensemble import BaggingClassifier\n",
"bagging_model1_2 = BaggingClassifier(bagged_model1_2, n_estimators=100)"
],
"metadata": {
"id": "OXUUleyneqwU"
},
"id": "OXUUleyneqwU",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"bagging_model1_2 = KNeighborsClassifier(\n",
" n_neighbors=25,\n",
" weights=\"distance\",\n",
" metric=\"euclidean\"\n",
")"
],
"metadata": {
"id": "5EOt0UcrevjP"
},
"id": "5EOt0UcrevjP",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "c785192f",
"metadata": {
"id": "c785192f",
"outputId": "d0a18440-9f88-4795-c371-af2e1b51ecd8",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array(['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', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '1', '0', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '1', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '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', '1', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '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', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '1', '0', '0', '0', '0', '1', '1', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '1', '1', '1', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '0', '0'], dtype=object)"
]
},
"metadata": {},
"execution_count": 225
}
],
"source": [
"bagging_model1_2.fit(train_set[['citric acid', 'sulphates', 'alcohol']], train_set['good wine'])\n",
"prediction1_2 = bagging_model1_2.predict(test_set[['citric acid', 'sulphates', 'alcohol']])\n",
"prediction1_2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cc1ca2c0",
"metadata": {
"id": "cc1ca2c0",
"outputId": "ffabd18d-eec2-41d5-8e28-4d557176dd09",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Score the X-train with Y-train is : 1.0\n",
"Score the X-test with Y-test is : 0.8984375\n",
"\n",
"Accuracy: 0.8984375\n",
"Recall: 0.8984375\n",
"Precision: 0.8877280830536913\n",
"\n",
"Confusion matrix: \n",
"[[542 11]\n",
" [ 54 33]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", bagging_model1_2.score(train_set[['citric acid','sulphates','alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", bagging_model1_2.score(test_set[['citric acid','sulphates', 'alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction1_2))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction1_2, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction1_2, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction1_2)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1d2a4789",
"metadata": {
"id": "1d2a4789",
"outputId": "8d13ccc1-55ef-4384-cbce-538d658601d7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"plot_confusion_matrix(bagging_model1_2, test_set[['citric acid','sulphates','alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "0b2818dc",
"metadata": {
"id": "0b2818dc"
},
"source": [
"### KNN Test 3"
]
},
{
"cell_type": "code",
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"parameters = {\"n_neighbors\": range(1,50),\n",
" \"weights\": [\"uniform\", \"distance\"]}\n",
"model1gs3 = GridSearchCV(KNeighborsClassifier(), parameters)\n",
"model1gs3.fit(train_set[['sulphates', 'alcohol']], train_set['good wine'])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "_lIORVYsfpvy",
"outputId": "023f0ee4-afdd-484c-c234-2378f34d0b06"
},
"id": "_lIORVYsfpvy",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"GridSearchCV(estimator=KNeighborsClassifier(),\n",
" param_grid={'n_neighbors': range(1, 50),\n",
" 'weights': ['uniform', 'distance']})"
]
},
"metadata": {},
"execution_count": 228
}
]
},
{
"cell_type": "code",
"source": [
"model1gs3.best_params_"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "eMpIL5Pwf0Xx",
"outputId": "e8d1ddf7-5e30-4149-ad20-3b9366270486"
},
"id": "eMpIL5Pwf0Xx",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'n_neighbors': 29, 'weights': 'uniform'}"
]
},
"metadata": {},
"execution_count": 229
}
]
},
{
"cell_type": "code",
"source": [
"best_k = model1gs3.best_params_[\"n_neighbors\"]\n",
"best_weights = model1gs3.best_params_[\"weights\"]\n",
"bagged_model1_3 = KNeighborsClassifier(\n",
" n_neighbors=best_k, weights=best_weights\n",
")"
],
"metadata": {
"id": "Ok_xe70of6Ap"
},
"id": "Ok_xe70of6Ap",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from sklearn.ensemble import BaggingClassifier\n",
"bagging_model1_3 = BaggingClassifier(bagged_model1_3, n_estimators=100)"
],
"metadata": {
"id": "YB3LZHtfgE1x"
},
"id": "YB3LZHtfgE1x",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"bagging_model1_3 = KNeighborsClassifier(\n",
" n_neighbors=29,\n",
" weights=\"uniform\",\n",
" metric=\"euclidean\"\n",
")"
],
"metadata": {
"id": "m5U2yRxvgkvJ"
},
"id": "m5U2yRxvgkvJ",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "c6609014",
"metadata": {
"id": "c6609014",
"outputId": "8a5b9162-ec2f-4f73-d83a-58a6adc7eeda",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array(['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', '1',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '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', '1', '0',\n",
" '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',\n",
" '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', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '1', '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0'], dtype=object)"
]
},
"metadata": {},
"execution_count": 234
}
],
"source": [
"bagging_model1_3.fit(train_set[['sulphates', 'alcohol']], train_set['good wine'])\n",
"prediction1_3 = bagging_model1_3.predict(test_set[['sulphates', 'alcohol']])\n",
"prediction1_3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b0e0625b",
"metadata": {
"id": "b0e0625b",
"outputId": "174f742d-a969-478e-e4ce-4d81038f3007",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Score the X-train with Y-train is : 0.8738269030239834\n",
"Score the X-test with Y-test is : 0.871875\n",
"\n",
"Accuracy: 0.871875\n",
"Recall: 0.871875\n",
"Precision: 0.8449176378952228\n",
"\n",
"Confusion matrix: \n",
"[[545 8]\n",
" [ 74 13]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", bagging_model1_3.score(train_set[['sulphates','alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", bagging_model1_3.score(test_set[['sulphates', 'alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction1_3))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction1_3, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction1_3, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction1_3)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "78f4bdf6",
"metadata": {
"id": "78f4bdf6",
"outputId": "dc0db364-a77e-4483-d406-8bb645e70964",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"plot_confusion_matrix(bagging_model1_3, test_set[['sulphates','alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "f1e2e4f0",
"metadata": {
"id": "f1e2e4f0"
},
"source": [
"### KNN Test 4"
]
},
{
"cell_type": "code",
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"parameters = {\"n_neighbors\": range(1,50),\n",
" \"weights\": [\"uniform\", \"distance\"]}\n",
"model1gs4 = GridSearchCV(KNeighborsClassifier(), parameters)\n",
"model1gs4.fit(train_set[['alcohol']], train_set['good wine'])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "M7X_U1WWhGmz",
"outputId": "dfc42797-c3d9-4133-ce89-43933df9278d"
},
"id": "M7X_U1WWhGmz",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"GridSearchCV(estimator=KNeighborsClassifier(),\n",
" param_grid={'n_neighbors': range(1, 50),\n",
" 'weights': ['uniform', 'distance']})"
]
},
"metadata": {},
"execution_count": 238
}
]
},
{
"cell_type": "code",
"source": [
"model1gs4.best_params_"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "g3TEGTWkhUxM",
"outputId": "f6be7185-9330-4704-8dc4-09dcb66a4812"
},
"id": "g3TEGTWkhUxM",
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'n_neighbors': 37, 'weights': 'uniform'}"
]
},
"metadata": {},
"execution_count": 239
}
]
},
{
"cell_type": "code",
"source": [
"best_k = model1gs4.best_params_[\"n_neighbors\"]\n",
"best_weights = model1gs4.best_params_[\"weights\"]\n",
"bagged_model1_4 = KNeighborsClassifier(\n",
" n_neighbors=best_k, weights=best_weights\n",
")"
],
"metadata": {
"id": "pHReBs5UhYub"
},
"id": "pHReBs5UhYub",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"bagging_model1_4 = KNeighborsClassifier(\n",
" n_neighbors=37,\n",
" weights=\"uniform\",\n",
" metric=\"euclidean\"\n",
")"
],
"metadata": {
"id": "OXXq5S8PhchN"
},
"id": "OXXq5S8PhchN",
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "192c4dee",
"metadata": {
"id": "192c4dee",
"outputId": "7da0a804-befa-488a-a04a-d4f98a5b917d",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array(['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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0'], dtype=object)"
]
},
"metadata": {},
"execution_count": 242
}
],
"source": [
"bagging_model1_4.fit(train_set[['alcohol']], train_set['good wine'])\n",
"prediction1_4 = bagging_model1_4.predict(test_set[['alcohol']])\n",
"prediction1_4"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2f2816cf",
"metadata": {
"id": "2f2816cf",
"outputId": "11b7514f-78fb-4ab3-9957-36db487dc1d9",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Score the X-train with Y-train is : 0.8644421272158499\n",
"Score the X-test with Y-test is : 0.8640625\n",
"\n",
"Accuracy: 0.8640625\n",
"Recall: 0.8640625\n",
"Precision: 0.7466040039062499\n",
"\n",
"Confusion matrix: \n",
"[[553 0]\n",
" [ 87 0]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", bagging_model1_4.score(train_set[['alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", bagging_model1_4.score(test_set[['alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction1_4))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction1_4, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction1_4, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction1_4)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4506dae1",
"metadata": {
"id": "4506dae1",
"outputId": "8bc098b9-1e25-41d7-8fc2-7f81d1726d6f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
}
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"plot_confusion_matrix(bagging_model1_4, test_set[['alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "8e372ca1",
"metadata": {
"id": "8e372ca1"
},
"source": [
"## Model 2: Decision Tree\n",
"### Decision Tree Test 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "54be2065",
"metadata": {
"id": "54be2065"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state = 152)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5ab0c157",
"metadata": {
"id": "5ab0c157",
"outputId": "b75f5bc1-7f37-4697-fe7e-494796e7489a",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"{'criterion': 'entropy', 'max_depth': 5, 'max_features': 4}\n"
]
}
],
"source": [
"parameter = {\"max_depth\": range(1,6), \"max_features\": range(1,10),\n",
" \"criterion\": [\"gini\", \"entropy\"]}\n",
"model2_cv = GridSearchCV(model2, parameter, cv=5)\n",
"model2_cv.fit(train_set.drop(['quality', 'good wine'], axis = 1),train_set['good wine'])\n",
"print(model2_cv.best_params_)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "de18cc05",
"metadata": {
"id": "de18cc05"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state = 152,\n",
" criterion = 'entropy',\n",
" max_depth = 5,\n",
" max_features = 4)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "edae346e",
"metadata": {
"id": "edae346e",
"outputId": "123080f8-70a8-40b2-d5f5-d8429edf947a"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1',\n",
" '0', '0', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '1', '1', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '1', '1', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '1', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1',\n",
" '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '1', '0', '0', '0', '0', '0', '1', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '1', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '1', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '1', '1',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '0', '1',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '0', '0', '1',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model2.fit(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine'])\n",
"prediction2_1 = model2.predict(test_set.drop(['quality', 'good wine'], axis = 1))\n",
"prediction2_1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fd704ab9",
"metadata": {
"id": "fd704ab9",
"outputId": "8f567dbd-ecc3-4089-aa33-b5e164cf201f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.8957247132429614\n",
"Score the X-test with Y-test is : 0.878125\n",
"\n",
"Accuracy: 0.878125\n",
"Recall: 0.878125\n",
"Precision: 0.8724467861179672\n",
"\n",
"Confusion matrix: \n",
"[[519 34]\n",
" [ 44 43]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model2.score(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model2.score(test_set.drop(['quality', 'good wine'], axis = 1), test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'], prediction2_1))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction2_1, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction2_1, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction2_1)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a4a3f7b",
"metadata": {
"id": "1a4a3f7b",
"outputId": "5469a483-da33-4c27-d6f4-0c86b5472c0b"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model2, test_set.drop(['quality', 'good wine'], axis = 1), test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "a3013d8b",
"metadata": {
"id": "a3013d8b"
},
"source": [
"### Decision Tree Test 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f7666c08",
"metadata": {
"id": "f7666c08"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state=152)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7a779f5c",
"metadata": {
"id": "7a779f5c",
"outputId": "a89a803a-baf3-4ae2-c7c6-b811833fb191"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'criterion': 'entropy', 'max_depth': 3, 'max_features': 2}\n"
]
}
],
"source": [
"parameter = {\"max_depth\": range(1,6), \"max_features\": range(1,10),\n",
" \"criterion\": [\"gini\", \"entropy\"]}\n",
"model2_cv = GridSearchCV(model2, parameter, cv=5)\n",
"model2_cv.fit(train_set[['citric acid', 'sulphates', 'alcohol']],train_set['good wine'])\n",
"print(model2_cv.best_params_)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f906179b",
"metadata": {
"id": "f906179b"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state=152, criterion='entropy', max_depth = 3, max_features=2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2e4f57f8",
"metadata": {
"id": "2e4f57f8",
"outputId": "99a16d53-cbfb-4003-9aad-a568a03a1c4a"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['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', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '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',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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', '1',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '1', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '1', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '0', '0',\n",
" '0', '1', '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',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model2.fit(train_set[['citric acid', 'sulphates', 'alcohol']], train_set['good wine'])\n",
"prediction2_2 = model2.predict(test_set[['citric acid', 'sulphates', 'alcohol']])\n",
"prediction2_2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d653b767",
"metadata": {
"id": "d653b767",
"outputId": "5374f215-70d5-4054-9e0b-a4286cfb0e14"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.8852971845672576\n",
"Score the X-test with Y-test is : 0.890625\n",
"\n",
"Accuracy: 0.890625\n",
"Recall: 0.890625\n",
"Precision: 0.8765479304939128\n",
"\n",
"Confusion matrix: \n",
"[[541 12]\n",
" [ 58 29]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model2.score(train_set[['citric acid','sulphates','alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model2.score(test_set[['citric acid','sulphates', 'alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction2_2))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction2_2, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction2_2, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction2_2)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "63fe9dd6",
"metadata": {
"id": "63fe9dd6",
"outputId": "b6ae4232-de98-4c8d-9afd-e909e75f758f"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model2, test_set[['citric acid','sulphates','alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "97126b93",
"metadata": {
"id": "97126b93"
},
"source": [
"### Decision Tree Test 3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3146cf3e",
"metadata": {
"id": "3146cf3e"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state=152)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c882a8e9",
"metadata": {
"id": "c882a8e9",
"outputId": "13c75917-2557-4632-92e4-b358608e37c8"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'criterion': 'gini', 'max_depth': 3, 'max_features': 2}\n"
]
}
],
"source": [
"parameter = {\"max_depth\": range(1,6), \"max_features\": range(1,10),\n",
" \"criterion\": [\"gini\", \"entropy\"]}\n",
"model2_cv = GridSearchCV(model2, parameter, cv=5)\n",
"model2_cv.fit(train_set[['sulphates', 'alcohol']], train_set['good wine'])\n",
"print(model2_cv.best_params_)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a3265d83",
"metadata": {
"id": "a3265d83"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state=152, criterion='gini', max_depth = 3, max_features=2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "03a4f5ff",
"metadata": {
"id": "03a4f5ff",
"outputId": "7543a9d6-a763-4938-a554-bce425525d6d"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['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', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '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',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '1', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '1', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '0', '0',\n",
" '0', '1', '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',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model2.fit(train_set[['sulphates', 'alcohol']], train_set['good wine'])\n",
"prediction2_3 = model2.predict(test_set[['sulphates', 'alcohol']])\n",
"prediction2_3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "72f0a2b1",
"metadata": {
"id": "72f0a2b1",
"outputId": "4a63e7e5-390f-41bb-dcb5-ac1eec8ab4fd"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.8821689259645464\n",
"Score the X-test with Y-test is : 0.89375\n",
"\n",
"Accuracy: 0.89375\n",
"Recall: 0.89375\n",
"Precision: 0.8810128647111526\n",
"\n",
"Confusion matrix: \n",
"[[541 12]\n",
" [ 56 31]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model2.score(train_set[['sulphates','alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model2.score(test_set[['sulphates', 'alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction2_3))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction2_3, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction2_3, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction2_3)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0339e966",
"metadata": {
"id": "0339e966",
"outputId": "60c14a16-74ec-406c-a83c-1fe8ca9af498"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model2, test_set[['sulphates','alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "a5b7b5c7",
"metadata": {
"id": "a5b7b5c7"
},
"source": [
"### Decision Tree Test 4"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e88f830b",
"metadata": {
"id": "e88f830b"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state=152)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "efc48456",
"metadata": {
"id": "efc48456",
"outputId": "fb01a475-a2a4-4d7a-b7bd-62ac283c2b04"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'criterion': 'gini', 'max_depth': 1, 'max_features': 1}\n"
]
}
],
"source": [
"parameter = {\"max_depth\": range(1,6), \"max_features\": range(1,10),\n",
" \"criterion\": [\"gini\", \"entropy\"]}\n",
"model2_cv = GridSearchCV(model2, parameter, cv=5)\n",
"model2_cv.fit(train_set[['alcohol']], train_set['good wine'])\n",
"print(model2_cv.best_params_)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c112f84b",
"metadata": {
"id": "c112f84b"
},
"outputs": [],
"source": [
"model2 = DecisionTreeClassifier(random_state=152, criterion='gini', max_depth = 1, max_features=1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "213abc9b",
"metadata": {
"id": "213abc9b",
"outputId": "17de15e2-92a4-46d8-dc9f-59b0a0925e55"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model2.fit(train_set[['alcohol']], train_set['good wine'])\n",
"prediction2_4 = model2.predict(test_set[['alcohol']])\n",
"prediction2_4"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8da44967",
"metadata": {
"id": "8da44967",
"outputId": "518344b4-875c-4f10-cef4-563cecaf9782"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.8644421272158499\n",
"Score the X-test with Y-test is : 0.8640625\n",
"\n",
"Accuracy: 0.8640625\n",
"Recall: 0.8640625\n",
"Precision: 0.7466040039062499\n",
"\n",
"Confusion matrix: \n",
"[[553 0]\n",
" [ 87 0]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model2.score(train_set[['alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model2.score(test_set[['alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction2_4))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction2_4, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction2_4, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction2_4)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ba8dfc27",
"metadata": {
"id": "ba8dfc27",
"outputId": "0c324985-3f96-4db0-fa53-81343a5c9566"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model2, test_set[['alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "cf393ab8",
"metadata": {
"id": "cf393ab8"
},
"source": [
"## Model 3: SVM"
]
},
{
"cell_type": "markdown",
"id": "21cc7506",
"metadata": {
"id": "21cc7506"
},
"source": [
"### SVM Test 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "217519f0",
"metadata": {
"id": "217519f0"
},
"outputs": [],
"source": [
"# Create Model 3 for SVC\n",
"model3 = SVC(random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dcf83ec6",
"metadata": {
"id": "dcf83ec6",
"outputId": "4ff83298-c8f8-41e8-9755-574f202ae773"
},
"outputs": [
{
"data": {
"text/plain": [
"SVC(C=1.1, gamma='auto', random_state=152)"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find the most suitable C\n",
"grid = {'C': [1, 1.1, 1.2, 1.3, 1.4, 2]}\n",
"\n",
"model3_cv = GridSearchCV(model3, grid, cv = 5)\n",
"model3_cv.fit(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine'])\n",
"\n",
"# Show the result\n",
"model3_cv.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4101011f",
"metadata": {
"id": "4101011f"
},
"outputs": [],
"source": [
"# Apply the change of C\n",
"model3 = SVC(C = 1.1,\n",
" random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "27ff613e",
"metadata": {
"id": "27ff613e",
"outputId": "9e03eaec-436b-40f2-a589-a6dcbe9ef3cf"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['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',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '1', '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',\n",
" '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', '1',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '1', '0', '1', '0',\n",
" '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',\n",
" '1', '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',\n",
" '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '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',\n",
" '0', '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '1', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model3.fit(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine'])\n",
"prediction3_1 = model3.predict(test_set.drop(['quality', 'good wine'], axis = 1))\n",
"prediction3_1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a4065d3f",
"metadata": {
"id": "a4065d3f",
"outputId": "ce71f98b-04e1-4848-c147-d3b080866387"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.9301355578727841\n",
"Score the X-test with Y-test is : 0.871875\n",
"\n",
"Accuracy: 0.871875\n",
"Recall: 0.871875\n",
"Precision: 0.8450952447163516\n",
"\n",
"Confusion matrix: \n",
"[[540 13]\n",
" [ 69 18]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model3.score(train_set.drop(['quality', 'good wine'], axis = 1), train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model3.score(test_set.drop(['quality', 'good wine'], axis = 1), test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'], prediction3_1))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction3_1, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction3_1, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction3_1)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "430b6da1",
"metadata": {
"id": "430b6da1",
"outputId": "35d239b8-2c56-45e6-bc95-6d5c46217551"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model3, test_set.drop(['quality', 'good wine'], axis = 1), test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "d6123abb",
"metadata": {
"id": "d6123abb"
},
"source": [
"### SVM Test 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e7acb64f",
"metadata": {
"id": "e7acb64f"
},
"outputs": [],
"source": [
"model3 = SVC(random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "952fb72e",
"metadata": {
"id": "952fb72e",
"outputId": "5f41deb8-8413-4378-b506-2f699fe01006"
},
"outputs": [
{
"data": {
"text/plain": [
"SVC(C=5, gamma='auto', random_state=152)"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find the most suitable C\n",
"grid = {'C': [0.9, 1, 1.1, 1.5, 1.9, 2, 2.1, 2.3, 2.5, 3, 4, 5, 6, 7, 8, 9, 10]}\n",
"\n",
"model3_cv = GridSearchCV(model3, grid, cv = 5)\n",
"model3_cv.fit(train_set[['citric acid', 'sulphates', 'alcohol']], train_set['good wine'])\n",
"\n",
"# Show the result\n",
"model3_cv.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "09451348",
"metadata": {
"id": "09451348"
},
"outputs": [],
"source": [
"# Apply the change of C\n",
"model3 = SVC(C = 5,\n",
" random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a95dab36",
"metadata": {
"id": "a95dab36",
"outputId": "5eb02faa-74c5-451d-928f-95a99d8bf893"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['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', '1',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model3.fit(train_set[['citric acid', 'sulphates', 'alcohol']], train_set['good wine'])\n",
"prediction3_2 = model3.predict(test_set[['citric acid', 'sulphates', 'alcohol']])\n",
"prediction3_2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c5ec1d23",
"metadata": {
"id": "c5ec1d23",
"outputId": "0f7d792c-5a2e-4d03-cf26-edbe2205c12a"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.8779979144942649\n",
"Score the X-test with Y-test is : 0.88125\n",
"\n",
"Accuracy: 0.88125\n",
"Recall: 0.88125\n",
"Precision: 0.87957\n",
"\n",
"Confusion matrix: \n",
"[[551 2]\n",
" [ 74 13]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model3.score(train_set[['citric acid','sulphates','alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model3.score(test_set[['citric acid','sulphates', 'alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction3_2))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction3_2, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction3_2, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction3_2)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "926f860e",
"metadata": {
"id": "926f860e",
"outputId": "fa5da437-38e5-403d-8cdb-e0693a6b7c02"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model3, test_set[['citric acid','sulphates','alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "075adb63",
"metadata": {
"id": "075adb63"
},
"source": [
"### SVM Test 3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3931e978",
"metadata": {
"id": "3931e978"
},
"outputs": [],
"source": [
"model3 = SVC(random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d952c33a",
"metadata": {
"id": "d952c33a",
"outputId": "82a7dc8a-c529-4d92-9062-1745e40ec439"
},
"outputs": [
{
"data": {
"text/plain": [
"SVC(C=5, gamma='auto', random_state=152)"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find the most suitable C\n",
"grid = {'C': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15]}\n",
"\n",
"model3_cv = GridSearchCV(model3, grid, cv = 5)\n",
"model3_cv.fit(train_set[['sulphates', 'alcohol']], train_set['good wine'])\n",
"\n",
"# Show the result\n",
"model3_cv.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f93b3791",
"metadata": {
"id": "f93b3791"
},
"outputs": [],
"source": [
"# Apply the change of C\n",
"model3 = SVC(C = 5,\n",
" random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b7185cb2",
"metadata": {
"id": "b7185cb2",
"outputId": "6fea1b98-3215-46f2-a900-7f92a2de1c02"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['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', '1',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0', '0', '1', '0', '0', '0', '1', '0', '0', '0', '0',\n",
" '1', '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',\n",
" '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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', '1', '0',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model3.fit(train_set[['sulphates', 'alcohol']], train_set['good wine'])\n",
"prediction3_3 = model3.predict(test_set[['sulphates', 'alcohol']])\n",
"prediction3_3"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "82dc4987",
"metadata": {
"id": "82dc4987",
"outputId": "920dfb15-2f01-4cc5-9a94-8e89930a6819"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.8779979144942649\n",
"Score the X-test with Y-test is : 0.8796875\n",
"\n",
"Accuracy: 0.8796875\n",
"Recall: 0.8796875\n",
"Precision: 0.8770584921268828\n",
"\n",
"Confusion matrix: \n",
"[[551 2]\n",
" [ 75 12]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model3.score(train_set[['sulphates','alcohol']],train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model3.score(test_set[['sulphates', 'alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'], prediction3_3))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction3_3, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction3_3, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction3_3)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c53caea2",
"metadata": {
"id": "c53caea2",
"outputId": "548ed9a1-f808-48b3-cd20-aa73ec6f058e"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model3, test_set[['sulphates','alcohol']], test_set['good wine'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "6119a484",
"metadata": {
"id": "6119a484"
},
"source": [
"### SVM Test 4"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6cb354fe",
"metadata": {
"id": "6cb354fe"
},
"outputs": [],
"source": [
"model3 = SVC(random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "240b17a2",
"metadata": {
"id": "240b17a2",
"outputId": "38deeed2-74cb-4e93-a463-31cb607ae7d5"
},
"outputs": [
{
"data": {
"text/plain": [
"SVC(C=0.0001, gamma='auto', random_state=152)"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find the most suitable C\n",
"grid = {'C': [0.0001, 0.00011, 0.1, 0.5, 1]}\n",
"\n",
"model3_cv = GridSearchCV(model3, grid, cv = 5)\n",
"model3_cv.fit(train_set[['alcohol']], train_set['good wine'])\n",
"\n",
"# Show the result\n",
"model3_cv.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "66cb19c6",
"metadata": {
"id": "66cb19c6"
},
"outputs": [],
"source": [
"# Apply the change of C\n",
"model3 = SVC(C = 0.0001,\n",
" random_state = 152,\n",
" gamma = 'auto')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "93ddfd86",
"metadata": {
"id": "93ddfd86",
"outputId": "9e025cee-a522-4a2c-a5f8-68de6afb42af"
},
"outputs": [
{
"data": {
"text/plain": [
"array(['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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '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',\n",
" '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',\n",
" '0', '0', '0'], dtype=object)"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model3.fit(train_set[['alcohol']], train_set['good wine'])\n",
"prediction3_4 = model3.predict(test_set[['alcohol']])\n",
"prediction3_4"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0219724c",
"metadata": {
"id": "0219724c",
"outputId": "b01a777c-b478-4acb-a383-2b8a124f9fc0"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Score the X-train with Y-train is : 0.8644421272158499\n",
"Score the X-test with Y-test is : 0.8640625\n",
"\n",
"Accuracy: 0.8640625\n",
"Recall: 0.8640625\n",
"Precision: 0.7466040039062499\n",
"\n",
"Confusion matrix: \n",
"[[553 0]\n",
" [ 87 0]]\n"
]
}
],
"source": [
"print(\"Score the X-train with Y-train is : \", model3.score(train_set[['alcohol']], train_set['good wine']))\n",
"print(\"Score the X-test with Y-test is : \", model3.score(test_set[['alcohol']], test_set['good wine']))\n",
"print()\n",
"print('Accuracy: ', accuracy_score(test_set['good wine'],prediction3_4))\n",
"print('Recall: ', recall_score(test_set['good wine'], prediction3_4, average=\"weighted\"))\n",
"print('Precision: ', precision_score(test_set['good wine'], prediction3_4, average=\"weighted\"))\n",
"print()\n",
"confusion = confusion_matrix(test_set['good wine'], prediction3_4)\n",
"print('Confusion matrix: ')\n",
"print(confusion)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b043a94e",
"metadata": {
"id": "b043a94e",
"outputId": "d7fe18fd-d491-4d0b-b076-03d9d54010f5"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATgAAAEGCAYAAADxD4m3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAZFklEQVR4nO3dfZRV1Znn8e+vigIEBS3eRF4CSWgN2kFdRGOc2BhNg0k66ExcC2McJmM3MYMxnaSThvSsziRZ2C7TTrrjy6SNscPEVho7cSAdFW0MjenEiCBRQRGiCJXircB3FKiqZ/64p/AKVbfOkXu59576fdY6q84599x9Hgp53Pvss/dWRGBmlkcN1Q7AzKxSnODMLLec4Mwst5zgzCy3nODMLLf6VTuAYsObG2PCuKZqh2EZPPvEoGqHYBm8yevsj306kjKmnz84du/pSHXt6if2LYuIGUdyvyNRUwluwrgmHl02rtphWAbTTzq92iFYBr+J5UdcRtueDn6zbGyqa5tG/274Ed/wCNRUgjOzehB0RGe1g0jFCc7MMgmgk/oYIOAEZ2aZdeIanJnlUBAccBPVzPIogA43Uc0sr/wMzsxyKYCOOpmFyAnOzDKrjydwTnBmllEQfgZnZvkUAQfqI785wZlZVqKDIxrOetQ4wZlZJgF0ugZnZnnlGpyZ5VLhRV8nODPLoQAORH3MlesEZ2aZBKKjTiYDr48ozaymdIZSbb2RtFnSk5LWSnosOdcs6UFJG5OfJxRdP1/SJkkbJE3vrXwnODPLpOsZXJotpfMj4vSImJoczwOWR8QkYHlyjKTJwCzgVGAGcIukxlIFO8GZWUaiIxpSbe/QTGBhsr8QuLjo/KKI2BcRzwObgLNKFeQEZ2aZFGb0bUi1AcMlPVa0zemmuAckrS76bFREbANIfo5Mzo8BthZ9tyU51yN3MphZJhFif5RsGRZrK2p6dufciGiVNBJ4UNIzJa7trs1b8pVj1+DMLLNOlGrrTUS0Jj93AvdQaHLukDQaIPm5M7m8BShedm8s0FqqfCc4M8uk0MnQkGorRdJgScd17QN/DDwFLAVmJ5fNBpYk+0uBWZIGSJoITAIeLXUPN1HNLCMdSQdCsVHAPZKgkIvujIj7Ja0CFku6EtgCXAoQEeskLQbWA+3A3IgouQK1E5yZZdLVyXDE5UQ8B0zp5vxu4IIevrMAWJD2Hk5wZpZZR4qXeGuBE5yZZRKIA1EfqaM+ojSzmtHVyVAPnODMLJNAbqKaWX6Vo5PhaHCCM7NMIijXayIV5wRnZpkUOhlSD9WqKic4M8vMnQxmlktBusksa4ETnJll5hqcmeVSYV1UJzgzyyWvbG9mOVVYNtC9qGaWQxFyE9XM8ssv+ppZLhXmg/MzODPLpbLN6FtxTnBmlknhNRHX4MwshzwW1cxyzdMlmVkuFaZLchPVzHLKz+DMLJcKs4m4iWpmOVQYquUE12f817Mmc8yxHTQ0QGO/4Kb7n+XHf3si993ZzNDmwsLbn53fylkXvMozjw/i7786Dij8h3LFV7Zz7kUvVzF6KzZ12itc9e1WGhuC++5qZvFNo6odUg1yDQ4ASTOAvwcagdsi4rpK3q+arr97E0OHdbzt3CV/totLP7/rbecmnPwGN92/gcZ+sHtHPz5/4cl88KMv0+j/1VRdQ0Mw99rfM3/Wu2nb1sSN927kkWVD2bJxYLVDqzn1MpKhYmlYUiNwM3ARMBm4TNLkSt2vXgwcFAeT2YF9Dag+/jvpE04+Yy+tm/uzfcsA2g80sGLJ8Zwz3bXrQ3X1oqbZqq2S9YazgE0R8RyApEXATGB9Be9ZHQq+ftl7QPDxK3bzsc/sBuBn/ziC5f/SzKT372XON1o57vhCDe+ZNYO44cvj2NnSn6/duMW1txox7MQD7Grtf/C4bVsTp5y5t4oR1S43UWEMsLXouAU4+9CLJM0B5gCMH1Of/9K/u2Qjw05s56W2fsyb9R7GvfdNPjG7jU9/aTsSLLz+RG795kl85buFX8cpZ+7lBys2sGXjAL7zxfF84PxX6D8wqvynsO5q0+G/lsPU05oMlUzD3f0GDvvPJSJujYipETF1xLD6GP5xqGEntgNw/PB2zp3xMs88PogTRrTT2AgNDXDR5XvYsHbQYd8bP2kfAwd1snmDn/HUgrZtTYw4af/B4+GjD7B7e1MVI6pNAbRHQ6qt2ioZQQswruh4LNBawftVxZt7G9j7WsPB/dX/fhwTTnmT3Tveqo3+6r6hTDj5TQC2b+lPRyEfsqOliZbfDWTU2P2HlWtH34a1gxgzcT+jxu2jX1Mn02a+xCMPDK12WDWpMxpSbWlIapT0uKR/TY6bJT0oaWPy84Sia+dL2iRpg6TpvZVdyTbhKmCSpInA74FZwKcreL+qeHFXP7555UQAOtrh/Ete4gPnv8r1XxjP79YdgwSjxu7nmusLzdOnHh3MP980kX79Cr12X7i25bDeV6uOzg5x81+N4do7n6OhER5Y1MwLz7p2fZgoexP1i8DTwJDkeB6wPCKukzQvOf7LpJNyFnAqcBLwb5L+ICJ6/AdUsQQXEe2SrgaWUXhN5PaIWFep+1XL6Hft5/v/tuGw81+7cUu311/4qRe58FMvVjose4dWPTSEVQ8N6f3CPqycE15KGgt8HFgAfDk5PROYluwvBFYAf5mcXxQR+4DnJW2i0Jn5657Kr+hT/Yi4F7i3kvcws6OvjDW4vwO+BhxXdG5URGwDiIhtkkYm58cAjxRd15Kc61H1nwKaWV3pmvAyzQYMl/RY0TanqxxJnwB2RsTqlLdO1XFZrD7fyzCzqglEe2fqulFbREzt4bNzgU9K+hgwEBgi6Q5gh6TRSe1tNLAzuT5zx6VrcGaWWSdKtZUSEfMjYmxETKDQefBQRHwGWArMTi6bDSxJ9pcCsyQNSDovJwGPlrqHa3Bmlk1UfD6464DFkq4EtgCXAkTEOkmLKYyGagfmlupBBSc4M8uoEovORMQKCr2lRMRu4IIerltAocc1FSc4M8usXoZqOcGZWSaB6EjfyVBVTnBmllm9zAfnBGdmmUTlOxnKxgnOzDILJzgzy6f6mQ/OCc7MMnMNzsxyKQI6Op3gzCyn3ItqZrkUuIlqZrnlTgYzy7F6WW3MCc7MMnMT1cxyqdCL6rGoZpZTbqKaWW65iWpmuRTICc7M8qtOWqhOcGaWUUB4qJaZ5ZWbqGaWW3XfiyrpRko0tSPimopEZGY1LS9jUR87alGYWf0IoN4TXEQsLD6WNDgiXq98SGZW6+qlidrreAtJ50haDzydHE+RdEvFIzOzGiWiM91WbWkGlP0dMB3YDRARvwXOq2BMZlbrIuVWZal6USNiq/S2bNxRmXDMrOZFPjoZumyV9CEgJPUHriFprppZH1UDtbM00jRRrwLmAmOA3wOnJ8dm1mcp5VZdvdbgIqINuPwoxGJm9aKz2gGkk6YX9d2SfiZpl6SdkpZIevfRCM7MalDXe3BptipL00S9E1gMjAZOAu4G7qpkUGZW2yLSbaVIGijpUUm/lbRO0jeT882SHpS0Mfl5QtF35kvaJGmDpOm9xZkmwSkifhwR7cl2B3XziNHMKqI8r4nsAz4SEVMoPNufIemDwDxgeURMApYnx0iaDMwCTgVmALdIaix1gx4TXJJFm4FfSJonaYKkd0n6GvDzXkM3s/wqQxM1Cl5LDpuSLYCZQNdIqoXAxcn+TGBRROyLiOeBTcBZpe5RqpNhdXKzrig/Vxwb8O2S0ZtZbil9G264pOJx7bdGxK0HyynUwFYD7wVujojfSBoVEdsAImKbpJHJ5WOAR4rKaknO9ajUWNSJqf8IZtZ3hCD9MKy2iJjaY1ERHcDpko4H7pF0WomyurtpyVSbaiRDctPJwMCiwP5vmu+aWQ6V+Sl8RLwkaQWFZ2s7JI1Oam+jgZ3JZS3AuKKvjQVaS5Wb5jWRbwA3Jtv5wPXAJzP/CcwsP8rQySBpRFJzQ9IxwIXAM8BSYHZy2WxgSbK/FJglaYCkicAk4NFS90hTg/sUMAV4PCI+K2kUcFuK75lZXpWnBjcaWJg8h2sAFkfEv0r6NbBY0pXAFuBSgIhYJ2kxsB5oB+YmTdwepUlwb0REp6R2SUMoVBf9oq9ZX1WmCS8j4gngjG7O7wYu6OE7C4AFae+RJsE9llQjf0Cht+M1eqkWmlm+ZehFrao0Y1H/R7L7fUn3A0OSzGtmfVW9JzhJZ5b6LCLWVCYkM6t1eajB3VDiswA+UuZYeHbTMGbMvKLcxVpFPVntAKwaamAgfRqlXvQ9/2gGYmZ1okamI0/DCz+bWXZOcGaWV6qTCS+d4MwsuzqpwaUZqiVJn5H018nxeEklpygxs/xSpN+qLc2El7cA5wCXJcevAjdXLCIzq311MmV5mibq2RFxpqTHASLixWT5QDPrq2qgdpZGmgR3IBkMG1CYAYC6WVPHzCqhFpqfaaRJcN8D7gFGSlpAYXaR/1nRqMysdkWOelEj4p8kraYwul/AxRHhle3N+rK81OAkjQf2Aj8rPhcRWyoZmJnVsLwkOAoraHUtPjMQmAhsoLB0l5n1Qbl5BhcRf1h8nMwy8rkeLjczqxmZRzJExBpJH6hEMGZWJ/JSg5P05aLDBuBMYFfFIjKz2panXlTguKL9dgrP5H5SmXDMrC7koQaXvOB7bER89SjFY2Y1TuSgk0FSv4hoLzV1uZn1UfWe4CisnHUmsFbSUuBu4PWuDyPipxWOzcxqUY3MFJJGmmdwzcBuCmswdL0PF4ATnFlflYNOhpFJD+pTvJXYutRJ/jazSshDDa4ROJa3J7YudfLHM7OKqJMMUCrBbYuIbx21SMysPuRkVa3qT8dpZjUpD03UC45aFGZWX+o9wUXEnqMZiJnVj3oZqpVm0Rkzs7dEhq0ESeMk/ULS05LWSfpicr5Z0oOSNiY/Tyj6znxJmyRtkDS9t1Cd4MwsE2XYetEOfCUi3gd8EJgraTIwD1geEZOA5ckxyWezKMxFOQO4JRlO2iMnODPLrgw1uIjYFhFrkv1XgaeBMcBMYGFy2ULg4mR/JrAoIvZFxPPAJqDkGs1OcGaWWYaFn4dLeqxom9NtedIE4AzgN8CoiNgGhSQIjEwuGwNsLfpaS3KuR5knvDQzy9CL2hYRU0tdIOlYClOw/XlEvCL12LjNPOjANTgzyyaZ8DLN1htJTRSS2z8VTeCxQ9Lo5PPRwM7kfAswrujrY4HWUuU7wZlZduXpRRXwQ+DpiPjfRR8tBWYn+7OBJUXnZ0kaIGkiMInCrEc9chPVzDIr00iGc4ErgCclrU3OfR24Dlgs6UpgC3ApQESsk7QYWE+hB3ZuRHSUuoETnJllV4YEFxG/pOe3SbodSRURC4AFae/hBGdmmeVhLKqZ2eGCXEx4aWZ2mFwsOmNm1iMnODPLK0V9ZDgnODPLJicz+pqZdcvP4Mwst+plwksnODPLzjU4M8ulnK1sb2b2dk5wZpZHftHXzHJNnfWR4ZzgzCwbvwfXd13yyaeZ8dFNRMDmF47nhu99iL/4818x9qRXADh28H5ee70/c7/08SpHat2ZOu0Vrvp2K40NwX13NbP4plHVDqkm9fnXRCTdDnwC2BkRp1XqPrVkWPNeZn7iGeZc/Sfs39+Pr391JdM+vJm/+c6HD17zZ59dzet7m6oYpfWkoSGYe+3vmT/r3bRta+LGezfyyLKhbNk4sNqh1Z46qcFVcsryH1FYu7BPaWwM+vfvoKGhkwEDOti955iiT4Pz/tMLrFg5oVrhWQknn7GX1s392b5lAO0HGlix5HjOmf5ytcOqSRlW1aqqitXgImJlshRYn7F7zyD+5Z7J/Pi2e9i3v5E1a0ezZu1JBz8/bfJOXnxpIK3bhlQxSuvJsBMPsKu1/8Hjtm1NnHLm3ipGVKMCqJPB9lVfdEbSnK41Ew+0v17tcI7IsYP3cc7ZW/lvcy7m8s/+FwYOaOcjf/Tcwc+nnbfZtbca1t1qdXXy7/ioK9eqWpVW9QQXEbdGxNSImNrUb3C1wzkiZ0zZzo4dx/LyKwPp6GjgPx4Zz/tOaQOgoaGTc8/ZyspfvqvKUVpP2rY1MeKk/QePh48+wO7tfl56qK734OqhiVr1BJcnO9sGc8rJbQzo3w4Ep79/O1tbCs3RM6YU9tt213cSz7MNawcxZuJ+Ro3bR7+mTqbNfIlHHhha7bBqT0T6rcr8mkgZbXh2OA//ajw3ffdeOjrE755r5r5lkwCY9uHNrHh4QnUDtJI6O8TNfzWGa+98joZGeGBRMy886x7U7tRC7SyNSr4mchcwDRguqQX4RkT8sFL3qxV33DWFO+6actj5G773oSpEY1mtemgIqx5yJ1Cv+nqCi4jLKlW2mVVXn6/BmVlOBdBRHxnOCc7MMnMNzszyqwZ6SNNwgjOzzFyDM7N88nRJZpZXAlQnnQweyWBmmSki1dZrOdLtknZKeqroXLOkByVtTH6eUPTZfEmbJG2QNL238p3gzCybyLD17kccPq3aPGB5REwClifHSJoMzAJOTb5zi6TGUoU7wZlZRuUbixoRK4E9h5yeCSxM9hcCFxedXxQR+yLieWATcFap8p3gzCyzDLOJDO+aDi3Z5qQoflREbANIfo5Mzo8BthZd15Kc65E7Gcwsu/TvwbVFxNQy3bWbGftKN4Sd4Mwsm6h4L+oOSaMjYpuk0cDO5HwLMK7ourFAa6mC3EQ1s+zK18nQnaXA7GR/NrCk6PwsSQMkTQQmAY+WKsg1ODPLLM0rIKnK6WZaNeA6YLGkK4EtwKUAEbFO0mJgPdAOzI2IjlLlO8GZWXZlSnAlplW7oIfrFwAL0pbvBGdm2QRQAwvKpOEEZ2aZiHSjFGqBE5yZZddZH1U4Jzgzy8ZNVDPLMzdRzSy/nODMLJ9qY1HnNJzgzCwbr6plZnnmZ3Bmll9OcGaWSwF0OsGZWS65k8HM8swJzsxyKYCO+hjK4ARnZhkFhBOcmeWVm6hmlkvuRTWzXHMNzsxyywnOzHIpAjpKrvVSM5zgzCw71+DMLLec4Mwsn8K9qGaWUwHhF33NLLc8VMvMcinCywaaWY65k8HM8ipcgzOzfPKEl2aWVx5sb2Z5FUDUyVCthmoHYGZ1JpIJL9NsvZA0Q9IGSZskzSt3qK7BmVlmUYYmqqRG4Gbgo0ALsErS0ohYf8SFJ1yDM7PsylODOwvYFBHPRcR+YBEws5xhKmqoN0TSLuCFasdRAcOBtmoHYZnk9e/sXREx4kgKkHQ/hd9PGgOBN4uOb42IW5NyPgXMiIg/TY6vAM6OiKuPJL5iNdVEPdJffK2S9FhETK12HJae/856FhEzylSUuiu+TGUDbqKaWfW0AOOKjscCreW8gROcmVXLKmCSpImS+gOzgKXlvEFNNVFz7NZqB2CZ+e+swiKiXdLVwDKgEbg9ItaV8x411clgZlZObqKaWW45wZlZbjnBVVClh6FY+Um6XdJOSU9VOxY7ck5wFVI0DOUiYDJwmaTJ1Y3KUvgRUK73vKzKnOAqp+LDUKz8ImIlsKfacVh5OMFVzhhga9FxS3LOzI4SJ7jKqfgwFDMrzQmucio+DMXMSnOCq5yKD0Mxs9Kc4CokItqBrmEoTwOLyz0MxcpP0l3Ar4GTJbVIurLaMdk756FaZpZbrsGZWW45wZlZbjnBmVluOcGZWW45wZlZbjnB1RFJHZLWSnpK0t2SBh1BWT9KVjVC0m2lJgKQNE3Sh97BPTZLOmz1pZ7OH3LNaxnv9b8k/UXWGC3fnODqyxsRcXpEnAbsB64q/jCZwSSziPjTXhbbnQZkTnBm1eYEV78eBt6b1K5+IelO4ElJjZK+I2mVpCckfQ5ABTdJWi/p58DIroIkrZA0NdmfIWmNpN9KWi5pAoVE+qWk9vhhSSMk/SS5xypJ5ybfHSbpAUmPS/oHuh+P+zaS/p+k1ZLWSZpzyGc3JLEslzQiOfceSfcn33lY0ill+W1aLnnRmTokqR+FeebuT06dBZwWEc8nSeLliPiApAHAf0h6ADgDOBn4Q2AUsB64/ZByRwA/AM5LymqOiD2Svg+8FhF/m1x3J/DdiPilpPEURmu8D/gG8MuI+JakjwNvS1g9+O/JPY4BVkn6SUTsBgYDayLiK5L+Oin7agqLwVwVERslnQ3cAnzkHfwarQ9wgqsvx0ham+w/DPyQQtPx0Yh4Pjn/x8D7u56vAUOBScB5wF0R0QG0Snqom/I/CKzsKisiepoX7UJgsnSwgjZE0nHJPf5z8t2fS3oxxZ/pGkmXJPvjklh3A53APyfn7wB+KunY5M97d9G9B6S4h/VRTnD15Y2IOL34RPIP/fXiU8AXImLZIdd9jN6na1KKa6DwaOOciHijm1hSj/2TNI1CsjwnIvZKWgEM7OHySO770qG/A7Oe+Blc/iwDPi+pCUDSH0gaDKwEZiXP6EYD53fz3V8DfyRpYvLd5uT8q8BxRdc9QKG5SHLd6cnuSuDy5NxFwAm9xDoUeDFJbqdQqEF2aQC6aqGfptD0fQV4XtKlyT0kaUov97A+zAkuf26j8HxtTbJwyj9QqKnfA2wEngT+D/Dvh34xInZReG72U0m/5a0m4s+AS7o6GYBrgKlJJ8Z63urN/SZwnqQ1FJrKW3qJ9X6gn6QngG8DjxR99jpwqqTVFJ6xfSs5fzlwZRLfOjwNvJXg2UTMLLdcgzOz3HKCM7PccoIzs9xygjOz3HKCM7PccoIzs9xygjOz3Pr/fEWRN/+12eQAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_confusion_matrix(model3, test_set[['alcohol']], test_set['good wine'])\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
},
"colab": {
"provenance": [],
"collapsed_sections": [
"089cbbdd",
"4ea88a2b",
"88e79d2a",
"1ac2e8d4",
"a3013d8b",
"97126b93",
"a5b7b5c7",
"cf393ab8",
"21cc7506",
"d6123abb",
"075adb63",
"6119a484"
],
"include_colab_link": true
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment