maejie / pgmpy

Python Library for Probabilistic Graphical Models

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pgmpy

Build Status Coverage Status Code Health Join the chat at https://gitter.im/pgmpy/pgmpy

Python Library for Probabilistic Graphical Models
Documentation: pgmpy
Mailing List: pgmpy@googlegroups.com
irc: #pgmpy on freenode.net

Dependencies:

  • Python 3.3
  • NetworkX 1.9.1
  • Scipy 0.12.1
  • Numpy 1.9.2
  • Cython 0.21
  • Pandas 0.15.1

To install all the depedencies

  • Either using pip, use
pip install -r requirements.txt
  • Else using conda, use
conda install --file requirements.txt

Installation:

pgmpy is installed using distutils. If you have the tools installed to build a python extension module:

sudo python3 setup.py install

Example:

from pgmpy.models import BayesianModel
from pgmpy.factors import TabularCPD
student = BayesianModel()
# instantiates a new Bayesian Model called 'student'

student.add_nodes_from(['diff', 'intel', 'grade'])
# adds nodes labelled 'diff', 'intel', 'grade' to student

student.add_edges_from([('diff', 'grade'), ('intel', 'grade')])
# adds directed edges from 'diff' to 'grade' and 'intel' to 'grade'

"""
diff cpd:

+-------+--------+
|diff:  |        |
+-------+--------+
|easy	|	0.2	 |
+-------+--------+
|hard	|	0.8	 |
+-------+--------+
"""
diff_cpd = TabularCPD('diff', 2, [[0.2], [0.8]])

"""
intel cpd:

+-------+--------+
|intel: |        |
+-------+--------+
|dumb	|	0.5	 |
+-------+--------+
|avg	|	0.3	 |
+-------+--------+
|smart	|	0.2	 |
+-------+--------+
"""
intel_cpd = TabularCPD('intel', 3, [[0.5], [0.3], [0.2]])

"""
grade cpd:

+------+-----------------------+---------------------+
|diff: |          easy         |         hard        |
+------+------+------+---------+------+------+-------+
|intel:| dumb |  avg |  smart  | dumb | avg  | smart |
+------+------+------+---------+------+------+-------+
|gradeA| 0.1  | 0.1  |   0.1   |  0.1 |  0.1 |   0.1 |
+------+------+------+---------+------+------+-------+
|gradeB| 0.1  | 0.1  |   0.1   |  0.1 |  0.1 |   0.1 |
+------+------+------+---------+------+------+-------+
|gradeC| 0.8  | 0.8  |   0.8   |  0.8 |  0.8 |   0.8 |
+------+------+------+---------+------+------+-------+
"""
grade_cpd = TabularCPD('grade', 3,
					   [[0.1,0.1,0.1,0.1,0.1,0.1],
                        [0.1,0.1,0.1,0.1,0.1,0.1], 
                        [0.8,0.8,0.8,0.8,0.8,0.8]],
					   evidence=['intel', 'diff'],
					   evidence_card=[3, 2])

student.add_cpds(diff_cpd, intel_cpd, grade_cpd)

# Finding active trail
student.active_trail_nodes('diff')

# Finding active trail with observation
student.active_trail_nodes('diff', observed='grade')

About

Python Library for Probabilistic Graphical Models

License:MIT License


Languages

Language:Python 99.8%Language:Shell 0.2%