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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47f9d70fae9d9dfc89abfe68159c9d902a0ad732f7b6541302b91fb058974d45
|
|
| MD5 |
0c9210cc45c053746cb2a6c09848f66f
|
|
| BLAKE2b-256 |
0a87cd7f171b16070d6d74766175b4784507d3b292392e0ab9ae6c3a81d60104
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
663f1f826483f8e1cd4fe1dbfdc8a9944ec2244030aa262c39901c06db6a283c
|
|
| MD5 |
3f2e22c348dec86ee5afa1d8263694ae
|
|
| BLAKE2b-256 |
e0d341d2217827d13c5857fa79f6b5c74ba701744c55606ea03109a1604399e5
|