{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "source": [ "!pip install pgmpy" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 0 }, "id": "QSPxdrEcQHWO", "outputId": "1337b06c-ed4b-4a07-de73-300c60db1783" }, "execution_count": 9, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting pgmpy\n", " Downloading pgmpy-0.1.20-py3-none-any.whl (1.9 MB)\n", "\u001b[K |████████████████████████████████| 1.9 MB 23.6 MB/s \n", "\u001b[?25hRequirement already satisfied: scikit-learn in /usr/local/lib/python3.8/dist-packages (from pgmpy) (1.0.2)\n", "Requirement already satisfied: tqdm in /usr/local/lib/python3.8/dist-packages (from pgmpy) (4.64.1)\n", "Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from pgmpy) (1.7.3)\n", "Requirement already satisfied: joblib in /usr/local/lib/python3.8/dist-packages (from pgmpy) (1.2.0)\n", "Requirement already satisfied: pyparsing in /usr/local/lib/python3.8/dist-packages (from pgmpy) (3.0.9)\n", "Requirement already satisfied: torch in /usr/local/lib/python3.8/dist-packages (from pgmpy) (1.12.1+cu113)\n", "Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (from pgmpy) (1.3.5)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from pgmpy) (1.21.6)\n", "Requirement already satisfied: statsmodels in /usr/local/lib/python3.8/dist-packages (from pgmpy) (0.12.2)\n", "Requirement already satisfied: opt-einsum in /usr/local/lib/python3.8/dist-packages (from pgmpy) (3.3.0)\n", "Requirement already satisfied: networkx in /usr/local/lib/python3.8/dist-packages (from pgmpy) (2.6.3)\n", "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas->pgmpy) (2.8.2)\n", "Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas->pgmpy) (2022.6)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.8/dist-packages (from python-dateutil>=2.7.3->pandas->pgmpy) (1.15.0)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.8/dist-packages (from scikit-learn->pgmpy) (3.1.0)\n", "Requirement already satisfied: patsy>=0.5 in /usr/local/lib/python3.8/dist-packages (from statsmodels->pgmpy) (0.5.3)\n", "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torch->pgmpy) (4.1.1)\n", "Installing collected packages: pgmpy\n", "Successfully installed pgmpy-0.1.20\n" ] } ] }, { "cell_type": "code", "source": [ "from pgmpy.models import BayesianNetwork\n", "from pgmpy.factors.discrete import TabularCPD\n", "import networkx as nx\n", "import pylab as plt" ], "metadata": { "id": "jH9IPyU1PlZr" }, "execution_count": 10, "outputs": [] }, { "cell_type": "code", "source": [ "# Defining Bayesian Structure\n", "model = BayesianNetwork([('Guest', 'Host'), ('Price', 'Host')])\n", " \n", "# Defining the CPDs:\n", "cpd_guest = TabularCPD('Guest', 3, [[0.33], [0.33], [0.33]])\n", "cpd_price = TabularCPD('Price', 3, [[0.33], [0.33], [0.33]])\n", "cpd_host = TabularCPD('Host', 3, [[0, 0, 0, 0, 0.5, 1, 0, 1, 0.5],\n", " [0.5, 0, 1, 0, 0, 0, 1, 0, 0.5],\n", " [0.5, 1, 0, 1, 0.5, 0, 0, 0, 0]],\n", " evidence=['Guest', 'Price'], evidence_card=[3, 3])\n", " \n", "# Associating the CPDs with the network structure.\n", "model.add_cpds(cpd_guest, cpd_price, cpd_host)" ], "metadata": { "id": "_MySp3BBQEpA" }, "execution_count": 11, "outputs": [] }, { "cell_type": "code", "source": [ "model.check_model()\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 0 }, "id": "XQ1Vf9DPQS5I", "outputId": "57d34fbf-49e5-4991-c592-9d9397e76b3a" }, "execution_count": 12, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "True" ] }, "metadata": {}, "execution_count": 12 } ] }, { "cell_type": "code", "source": [ "# Infering the posterior probability\n", "from pgmpy.inference import VariableElimination\n", " \n", "infer = VariableElimination(model)\n", "posterior_p = infer.query(['Host'], evidence={'Guest': 2, 'Price': 2})\n", "print(posterior_p)\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 0 }, "id": "z1PVHAJAQWH9", "outputId": "9ed7ce55-52fe-4f9e-ba11-310b2df2c648" }, "execution_count": 13, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "+---------+-------------+\n", "| Host | phi(Host) |\n", "+=========+=============+\n", "| Host(0) | 0.5000 |\n", "+---------+-------------+\n", "| Host(1) | 0.5000 |\n", "+---------+-------------+\n", "| Host(2) | 0.0000 |\n", "+---------+-------------+\n" ] } ] }, { "cell_type": "code", "source": [ "nx.draw(model, with_labels=True)\n", "plt.savefig('model.png')\n", "plt.close()" ], "metadata": { "id": "U88HCTdEQZIQ" }, "execution_count": 15, "outputs": [] }, { "cell_type": "markdown", "source": [ "![image.png](data:image/png;base64,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R/obNWqETp06Wb2XBiIKKbCIlBPWqrClOGtUvv32W6xbt85a61911VV2CojHlbWqInJq6tevj379+lnt18GDB23GltRs+ukpcoa4v87CQA5t41Hl8ePH2xwg1qyMHTsW7du3V1ARKaPSgYiJiYkaiChGP0VFzhDDyvfff4+HHnrImsGNGjXKimy5nK3tH5HTw9NC4eHh1qeIXaA5a0tqNgUWkdPEoMJtn+effx4ff/yxNby6/fbbrV6lXr16VjCobrUip48N5IYPH25brWy4qNNCNZsCi8hp4BL15MmTMWHCBOux0qtXL4wcORJ9+vSxYkEFFZEz5+fnh65du9qWalxcHBISEtxXpCZSYBE5RaWTlXnMcsaMGbYNlJKSYhNmWavSpUsXO64sIuWD20JcrWTxugYiigKLyCngCQX2gmATuDfffNNmAbGFOOtWeAooLCxMqyoiFaRnz57274ujLTRbqOZSYBE5BbGxsfjkk0/whz/8wV71PfLII7jrrrusuZWIVCxuC7GehS8YNBCx5lJgETkJFvhxC2jixIl47bXXbCvolltuscJabv9ERETA19fX/WgRqShcwWzRooW95Um8vLw89xWpSRRYRE6AQWXjxo149913sXDhQgQHB2PIkCG45JJL0LFjRztuqS0gkcrBVU12iW7cuDFmzZqlgYg1lAKLyDGKiooQHx+PpUuXWrfaxYsXo27dutZbhbUqPAHEH54iUrm4wtK8eXNb6WSrfnaWlppFgUXEhds//AHIrpqcEMtutfPnz8ett95qdSs8tswjliJSNaKioiyw8N8hQ4s639Y8CiwiLgUFBVi/fj0effRROwHEIr/33nvPjizXrl3b/SgRqUoNGzbEgAED7MUEV0KlZlFgkRqNx5V37NiBf//733jxxRdt4NrNN99s2z/cL2ftiuYAiTgDe7L0798fa9assUZy2haqWfSTWGosdqjl9s/nn3+OLVu2WDHtiBEjbHYJ98t1AkjEWWrVqoWYmBg7LcR2/VplqVkUWKRGYa0Kj0Ru377dwsrMmTOtxwqPKd95550477zzbEqsiDgPC965Rdu3b18biMh/x1JzKLBIjcETQJmZmdi9ezc+/fRTvP/++7aKwqJahhUuN2tVRcTZAgMDMWzYMNsS4gRnbutKzaDAIjUGt4B4VPl3v/udvTK755578Oc//xnnnHOO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)" ], "metadata": { "id": "SjxWmq9TQtae" } }, { "cell_type": "code", "source": [], "metadata": { "id": "UWiV5HBZlrW5" }, "execution_count": null, "outputs": [] } ] }