{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Naive_Bayes",
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "AxuqdJ9honJr"
      },
      "source": [
        "import pandas as pd\n",
        "dataset = [[3.393533211,2.331273381,0],\n",
        "\t[3.110073483,1.781539638,0],\n",
        "\t[1.343808831,3.368360954,0],\n",
        "\t[3.582294042,4.67917911,0],\n",
        "\t[2.280362439,2.866990263,0],\n",
        "\t[7.423436942,4.696522875,1],\n",
        "\t[5.745051997,3.533989803,1],\n",
        "\t[9.172168622,2.511101045,1],\n",
        "\t[7.792783481,3.424088941,1],\n",
        "\t[7.939820817,0.791637231,1]]\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "UagJy40Go2t6",
        "outputId": "2f32c97f-1aa5-4c0d-e53e-572a5e7971b9"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "df = pd.DataFrame(dataset)\n",
        "plt.scatter(df[0],df[1], c=df[2])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7f01fc558be0>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Z2bshPoHpjFW"
      },
      "source": [
        "# Split the dataset by class values, returns a dictionary\n",
        "def separate_by_class(dataset):\n",
        "\tseparated = dict()\n",
        "\tfor i in range(len(dataset)):\n",
        "\t\tvector = dataset[i]\n",
        "\t\tclass_value = vector[-1]\n",
        "\t\tif (class_value not in separated):\n",
        "\t\t\tseparated[class_value] = list()\n",
        "\t\tseparated[class_value].append(vector)\n",
        "\treturn separated\n",
        "\n",
        "separated = separate_by_class(dataset)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TkPjjuTRpv4j",
        "outputId": "92e7eccb-ea71-4b2b-da74-54a20bfcfb93"
      },
      "source": [
        "separated[1]"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[[7.423436942, 4.696522875, 1],\n",
              " [5.745051997, 3.533989803, 1],\n",
              " [9.172168622, 2.511101045, 1],\n",
              " [7.792783481, 3.424088941, 1],\n",
              " [7.939820817, 0.791637231, 1]]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 17
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RMFKW1i6p4Z2",
        "outputId": "add934b3-3360-4099-c1b0-97d6bb1b9f9c"
      },
      "source": [
        "def mean(numbers):\n",
        "\treturn sum(numbers)/float(len(numbers))\n",
        " \n",
        "from math import sqrt\n",
        "\n",
        "# Calculate the standard deviation of a list of numbers\n",
        "def stdev(numbers):\n",
        "\tavg = mean(numbers)\n",
        "\tvariance = sum([(x-avg)**2 for x in numbers]) / float(len(numbers)-1)\n",
        "\treturn sqrt(variance)\n",
        " \n",
        "\n",
        "# Calculate the mean, stdev and count for each column in a dataset\n",
        "def summarize_dataset(dataset):\n",
        "\tsummaries = [(mean(column), stdev(column), len(column)) for column in zip(*dataset)]\n",
        "\tdel(summaries[-1])\n",
        "\treturn summaries\n",
        "\n",
        "summary = summarize_dataset(dataset)\n",
        "summary"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[(5.178333386499999, 2.7665845055177263, 10),\n",
              " (2.9984683241, 1.218556343617447, 10)]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 20
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7_dwhoWort3X"
      },
      "source": [
        "def summarize_by_class(dataset):\n",
        "\tseparated = separate_by_class(dataset)\n",
        "\tsummaries = dict()\n",
        "\tfor class_value, rows in separated.items():\n",
        "\t\tsummaries[class_value] = summarize_dataset(rows)\n",
        "\treturn summaries"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aNLhiBq4rxOq",
        "outputId": "1d644338-f7df-4c07-9b73-07b8db3ab803"
      },
      "source": [
        "summarize_by_class(dataset)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{0: [(2.7420144012, 0.9265683289298018, 5),\n",
              "  (3.0054686692, 1.1073295894898725, 5)],\n",
              " 1: [(7.6146523718, 1.2344321550313704, 5),\n",
              "  (2.9914679790000003, 1.4541931384601618, 5)]}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 22
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zmQM_9WKr6oK"
      },
      "source": [
        "from math import sqrt\n",
        "from math import pi\n",
        "from math import exp\n",
        "def calculate_probability(x, mean, stdev):\n",
        "\texponent = exp(-((x-mean)**2 / (2 * stdev**2 )))\n",
        "\treturn (1 / (sqrt(2 * pi) * stdev)) * exponent"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "I0mn_crjsDZD",
        "outputId": "198a954b-96aa-470e-83fb-412781b22f80"
      },
      "source": [
        "calculate_probability(2.7420144012,0.92, 9.17)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0.042654808645052965"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 29
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 405
        },
        "id": "ItXuFz39ss2q",
        "outputId": "b8285dbb-bdc9-420e-a54b-1c3fd8da735f"
      },
      "source": [
        "import numpy as np\n",
        "x1 = [calculate_probability(2.74,0.92,x) for x in np.linspace(0,10,100)]\n",
        "x2 = [calculate_probability(7.61,1.23,x) for x in np.linspace(0,10,100)]\n",
        "plt.plot(x1)\n",
        "plt.plot(x2)\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:5: RuntimeWarning: divide by zero encountered in double_scalars\n",
            "  \"\"\"\n",
            "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:6: RuntimeWarning: divide by zero encountered in double_scalars\n",
            "  \n",
            "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:6: RuntimeWarning: invalid value encountered in double_scalars\n",
            "  \n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7f01fc481438>]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 34
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "3JasBRObttXC",
        "outputId": "9571128d-c3b6-4328-b217-1b7c58a095a8"
      },
      "source": [
        "def calculate_class_probabilities(summaries, row):\n",
        "\ttotal_rows = sum([summaries[label][0][2] for label in summaries])\n",
        "\tprobabilities = dict()\n",
        "\tfor class_value, class_summaries in summaries.items():\n",
        "\t\tprobabilities[class_value] = summaries[class_value][0][2]/float(total_rows)\n",
        "\t\tfor i in range(len(class_summaries)):\n",
        "\t\t\tmean, stdev, count = class_summaries[i]\n",
        "\t\t\tprobabilities[class_value] *= calculate_probability(row[i], mean, stdev)\n",
        "\treturn probabilities\n",
        "\n",
        "\n",
        "summaries = summarize_by_class(dataset)\n",
        "probabilities = calculate_class_probabilities(summaries, dataset[7])\n",
        "print(probabilities)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "{0: 2.44629984336952e-12, 1: 0.018937264964228803}\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OVEMrsUCuZ-Q"
      },
      "source": [
        "df = pd.read_csv('iris.csv',header=None)\n",
        "df[4]=df[4].astype('category').cat.codes"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "h2dgjvcHvriR",
        "outputId": "b2b820a5-8d60-41aa-baa2-bc2729428851"
      },
      "source": [
        "summaries = summarize_by_class(df.to_numpy())\n",
        "summaries"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{0.0: [(5.005999999999999, 0.3524896872134512, 50),\n",
              "  (3.4180000000000006, 0.38102439795469095, 50),\n",
              "  (1.464, 0.1735111594364455, 50),\n",
              "  (0.2439999999999999, 0.10720950308167837, 50)],\n",
              " 1.0: [(5.936, 0.5161711470638635, 50),\n",
              "  (2.7700000000000005, 0.3137983233784114, 50),\n",
              "  (4.26, 0.46991097723995806, 50),\n",
              "  (1.3259999999999998, 0.197752680004544, 50)],\n",
              " 2.0: [(6.587999999999998, 0.635879593274432, 50),\n",
              "  (2.9739999999999998, 0.3224966381726376, 50),\n",
              "  (5.552, 0.5518946956639835, 50),\n",
              "  (2.026, 0.27465005563666733, 50)]}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 57
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "jdRsTC-LwSfD",
        "outputId": "2d0ea9a8-800b-4761-9855-f63de5c43be6"
      },
      "source": [
        "calculate_class_probabilities(summaries, [5.0,3.6,1.4,0.2,0])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{0.0: 2.5890061173739514,\n",
              " 1.0: 2.702798311974989e-18,\n",
              " 2.0: 2.3607221382040533e-25}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 58
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LzAXVaGpx-82"
      },
      "source": [
        "splits = 5\n",
        "from random import shuffle\n",
        "\n",
        "data = df.to_numpy()\n",
        "shuffle(data)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mD5SLhCiyMCy",
        "outputId": "c2fe35c8-2176-4edc-914b-384c2f8f3275"
      },
      "source": [
        "from sklearn.model_selection import KFold\n",
        "kf = KFold(n_splits=5)\n",
        "kf.get_n_splits(df)\n",
        "print(kf)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "KFold(n_splits=5, random_state=None, shuffle=False)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QYE6i7cfzgb6"
      },
      "source": [
        "\n",
        "def get_class(class_dict):\n",
        "  cl = -1\n",
        "  max = -1\n",
        "  for c,p in class_dict.items():\n",
        "    if p>max:\n",
        "      cl=c\n",
        "      max=p\n",
        "  return(cl)\n",
        "\n",
        "errors =[]\n",
        "for train_index, test_index in kf.split(df):\n",
        "  #print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n",
        "  X_train, X_test = df.iloc[train_index], df.iloc[test_index]\n",
        "  summaries = summarize_by_class(X_train.to_numpy())\n",
        "\n",
        "  for i,row in X_test.iterrows():\n",
        "    classes = calculate_class_probabilities(summaries, row.to_numpy())\n",
        "    cl = get_class(classes)\n",
        "    errors.append(abs(row[4]-cl))\n",
        "  "
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "AjsC5Nvp1kj-",
        "outputId": "c41765da-1244-47cd-8a12-5ce26d061842"
      },
      "source": [
        "mean(errors)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0.05333333333333334"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 95
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AMCEsZqo3Zmp"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "b4gYnavD3aUb"
      },
      "source": [
        "### Practice dataset\n",
        "\n",
        "Wisconsin Breast Cancer Dataset\n",
        "https://www.kaggle.com/priyanka841/breast-cancer-wisconsin\n",
        "\n",
        "Look at distribution of features and seee if normal/gausssian fits. If not -- what distribution should we use? \n",
        "\n",
        "Play with feature selection -- what features contribute to improvement and what don't?\n",
        "\n",
        "Use k-fold to validate\n",
        "\n"
      ]
    }
  ]
}