{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1dd79907",
   "metadata": {},
   "source": [
    "## Bayes Classifier\n",
    "\n",
    "author: Jacob Schreiber <br>\n",
    "contact: jmschreiber91@gmail.com\n",
    "\n",
    "Although most of the models implemented in pomegranate are unsupervised, a simple way to construct a classifier using probabilistic models is to use Bayes' rule. Specifically, given a set of probabilistic models M, one can make classifications on some data D by calculating the posterior probability of the data under each of these models.\n",
    "\n",
    "\\begin{equation}\n",
    "    P(M|D) = \\frac{P(D|M)P(M)}{P(D)}\n",
    "\\end{equation}\n",
    "\n",
    "Specifically, what this equation is saying is that one should calculate the likelihood of the data under each component, $P(D|M)$, multiply it by the prior probability of data coming from that component regardless of what the data actually is $P(M)$, and then divide by some factor. \n",
    "\n",
    "More concretely: if you have a set of probability distributions and want to classify points as having come from one of them, you just calculate the likelihood of the data given the distribution and then multiply through by the prior for each distribution, which can just be a uniform distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "398080bf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n",
      "numpy      : 1.23.4\n",
      "scipy      : 1.9.3\n",
      "torch      : 1.13.0\n",
      "pomegranate: 1.0.0\n",
      "\n",
      "Compiler    : GCC 11.2.0\n",
      "OS          : Linux\n",
      "Release     : 4.15.0-208-generic\n",
      "Machine     : x86_64\n",
      "Processor   : x86_64\n",
      "CPU cores   : 8\n",
      "Architecture: 64bit\n",
      "\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "import seaborn; seaborn.set_style('whitegrid')\n",
    "\n",
    "import torch\n",
    "\n",
    "from pomegranate.bayes_classifier import BayesClassifier\n",
    "from pomegranate.distributions import *\n",
    "\n",
    "\n",
    "numpy.random.seed(0)\n",
    "numpy.set_printoptions(suppress=True)\n",
    "\n",
    "%load_ext watermark\n",
    "%watermark -m -n -p numpy,scipy,torch,pomegranate"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb496012",
   "metadata": {},
   "source": [
    "### Naive Bayes\n",
    "\n",
    "The simplest form of a Bayes classifier is the naive Bayes classifier. The reason it is \"naive\" is that the classifier assumes that the features are all independent from each other. This assumption makes the classifier fast and interpretable."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ef85791",
   "metadata": {},
   "source": [
    "#### Initialization and Fitting\n",
    "\n",
    "Bayes classifiers can be initialized or fit in the same way that mixtures can. Specifically, you can either pass in learned distributions, or uninitialized distributions that are then fit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6a97eb9e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 600x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "numpy.random.seed(0)\n",
    "\n",
    "X = numpy.concatenate([numpy.random.normal((7, 2), 1, size=(100, 2)),\n",
    "                       numpy.random.normal((2, 3), 1, size=(150, 2)),\n",
    "                       numpy.random.normal((7, 7), 1, size=(100, 2))])\n",
    "\n",
    "y = numpy.concatenate([numpy.zeros(100), numpy.zeros(150)+1, numpy.zeros(100)+2])\n",
    "\n",
    "plt.figure(figsize=(6, 5))\n",
    "plt.scatter(X[:,0], X[:,1])\n",
    "plt.axis(False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7659596c",
   "metadata": {},
   "source": [
    "A Gaussian naive Bayes model can be initialized like the following:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "dbebf231",
   "metadata": {},
   "outputs": [],
   "source": [
    "d1 = Normal([1.1, 1.3], [0.3, 0.9], covariance_type='diag')\n",
    "d2 = Normal([1.3, 1.8], [1.1, 1.5], covariance_type='diag')\n",
    "d3 = Normal([2.1, 2.3], [0.5, 1.8], covariance_type='diag')\n",
    "\n",
    "model = BayesClassifier([d1, d2, d3])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "920657cc",
   "metadata": {},
   "source": [
    "And we can make predictions for the above points just like other methods:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c2142598",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_hat = model.predict(X)\n",
    "\n",
    "for i in range(3):\n",
    "    plt.scatter(*X[y_hat == i].T)\n",
    "\n",
    "plt.axis(False)    \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d733034",
   "metadata": {},
   "source": [
    "Wow, looks pretty bad. Let's try fitting to the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "20538f6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model = BayesClassifier([Normal(covariance_type='diag') for i in range(3)]).fit(X, y)\n",
    "\n",
    "y_hat = model.predict(X)\n",
    "\n",
    "\n",
    "for i in range(3):\n",
    "    plt.scatter(*X[y_hat == i].T)\n",
    "\n",
    "plt.axis(False)    \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.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
