Skip to main content

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:

  1. Crear una instancia de la clase BNNetwork network = BNetwork()
  2. Agregar variables a la red network.add_variable("A")
  3. 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"])
  4. 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)
  5. 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

  1. Obtener la representación compacta network.compact_string() (string)
  2. Obtener los factores de la red network.factor_string() (string)
  3. 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: Example Network

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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gbnnetwork-1.3.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file gbnnetwork-1.3.0.tar.gz.

File metadata

  • Download URL: gbnnetwork-1.3.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for gbnnetwork-1.3.0.tar.gz
Algorithm Hash digest
SHA256 47f9d70fae9d9dfc89abfe68159c9d902a0ad732f7b6541302b91fb058974d45
MD5 0c9210cc45c053746cb2a6c09848f66f
BLAKE2b-256 0a87cd7f171b16070d6d74766175b4784507d3b292392e0ab9ae6c3a81d60104

See more details on using hashes here.

File details

Details for the file gbnnetwork-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: gbnnetwork-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for gbnnetwork-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 663f1f826483f8e1cd4fe1dbfdc8a9944ec2244030aa262c39901c06db6a283c
MD5 3f2e22c348dec86ee5afa1d8263694ae
BLAKE2b-256 e0d341d2217827d13c5857fa79f6b5c74ba701744c55606ea03109a1604399e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page