Implementation of Bayesian network.
Project description
BNNetwork Library
Esta librería permite crear redes Bayesianas a partir de la probabilidad condicional de cada nodo.
Instalar
pip install gbnnetwork
Uso
Para crear una Red de Inferencia, se deben de seguir los siguientes pasos:
- Crear una instancia de la clase BNNetwork
network = BNetwork()
- Agregar variables a la red
network.add_variable("A")
- Asignar los padres de cada variable (en caso la variable no tenga padres este paso se puede omitir)
network.set_parents_to_variable("A", ["B", "E"])
- Agregar las probabilidades a las variables para definir la red totalmente. Toda la red debe de estar definida si se desea responder cualquier consulta
network.add_probability("A|BE", 0.001)
- Hacer una query
p = network.inference({'B': False}, {'A': False})
(Si se desea hacer una query sin valores observados, el diccionario se debe enviar vacío)
Funciones De Utilidad
- Obtener la representación compacta
network.compact_string()
(string) - Obtener los factores de la red
network.factor_string()
(string) - Saber si la red esta totalmente definida
network.validate_defined_state()
(boolean)
Ejemplo
Tomando como referencia el siguiente documento: https://people.cs.pitt.edu/~milos/courses/cs2740/Lectures/class19.pdf
La red que se propone tiene la siguiente topología:
Se procede de la siguiente manera:
from gbnnetwork import BNetwork
network = BNetwork() # Paso 1
# Paso 2
network.add_variable("B")
network.add_variable("E")
network.add_variable("A")
network.add_variable("J")
network.add_variable("M")
# Paso 3
network.set_parents_to_variable("A", ["B", "E"])
network.set_parents_to_variable("J", ["A"])
network.set_parents_to_variable("M", ["A"])
# Paso 4
network.add_probability("B", 0.001)
network.add_probability("E", 0.002)
network.add_probability("A|BE", 0.95)
network.add_probability("A|-BE", 0.29)
network.add_probability("A|B-E", 0.94)
network.add_probability("A|-B-E", 0.001)
network.add_probability("M|A", 0.7)
network.add_probability("M|-A", 0.01)
network.add_probability("J|A", 0.9)
network.add_probability("J|-A", 0.05)
# Hacer la query P(B=True|J=True,M=True)
p = network.inference({'B': True}, {'J': True, 'M': True}) # 0.2841718353643929 = 28%
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gbnnetwork-1.3.0.tar.gz
(4.5 kB
view hashes)
Built Distribution
Close
Hashes for gbnnetwork-1.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 663f1f826483f8e1cd4fe1dbfdc8a9944ec2244030aa262c39901c06db6a283c |
|
MD5 | 3f2e22c348dec86ee5afa1d8263694ae |
|
BLAKE2b-256 | e0d341d2217827d13c5857fa79f6b5c74ba701744c55606ea03109a1604399e5 |