Commit e43d9d3be1437823c89e473cf09346b8d30fd947

Authored by Francisco Coelho
1 parent 9d633d90
Exists in master

AMartins | Tarefa 01 | 01

students/amartins/tarefas/asia2.bif 0 → 100644
... ... @@ -0,0 +1,60 @@
  1 +network unknown {
  2 +}
  3 +variable asia {
  4 + type discrete [ 2 ] { yes, no };
  5 +}
  6 +variable tub {
  7 + type discrete [ 2 ] { yes, no };
  8 +}
  9 +variable smoke {
  10 + type discrete [ 2 ] { yes, no };
  11 +}
  12 +variable lung {
  13 + type discrete [ 2 ] { yes, no };
  14 +}
  15 +variable bronc {
  16 + type discrete [ 2 ] { yes, no };
  17 +}
  18 +variable either {
  19 + type discrete [ 2 ] { yes, no };
  20 +}
  21 +variable xray {
  22 + type discrete [ 2 ] { yes, no };
  23 +}
  24 +variable dysp {
  25 + type discrete [ 2 ] { yes, no };
  26 +}
  27 +probability ( asia ) {
  28 + table 0.01, 0.99;
  29 +}
  30 +probability ( tub | asia ) {
  31 + (yes) 0.05, 0.95;
  32 + (no) 0.01, 0.99;
  33 +}
  34 +probability ( smoke ) {
  35 + table 0.5, 0.5;
  36 +}
  37 +probability ( lung | smoke ) {
  38 + (yes) 0.1, 0.9;
  39 + (no) 0.01, 0.99;
  40 +}
  41 +probability ( bronc | smoke ) {
  42 + (yes) 0.6, 0.4;
  43 + (no) 0.3, 0.7;
  44 +}
  45 +probability ( either | lung, tub ) {
  46 + (yes, yes) 1.0, 0.0;
  47 + (no, yes) 1.0, 0.0;
  48 + (yes, no) 1.0, 0.0;
  49 + (no, no) 0.0, 1.0;
  50 +}
  51 +probability ( xray | either ) {
  52 + (yes) 0.98, 0.02;
  53 + (no) 0.05, 0.95;
  54 +}
  55 +probability ( dysp | bronc, either ) {
  56 + (yes, yes) 0.9, 0.1;
  57 + (no, yes) 0.7, 0.3;
  58 + (yes, no) 0.8, 0.2;
  59 + (no, no) 0.1, 0.9;
  60 +}
... ...
students/amartins/tarefas/graph_asia2.png 0 → 100644

32.7 KB

students/amartins/tarefas/tarefa1a.py 0 → 100644
... ... @@ -0,0 +1,38 @@
  1 +import bnlearn as bn
  2 +
  3 +asia = bn.import_DAG("asia2.bif")
  4 +
  5 +model = asia['model'] # Cria um objeto BayesianModel
  6 +
  7 +
  8 +
  9 +nos = model.nodes()
  10 +print("Número de nós:", len(nos)) #resposta à pergunta "quantos nós tem a rede?"
  11 +
  12 +print("Lista de nós:", nos)
  13 +
  14 +asc = 0
  15 +des = 0
  16 +nos_in = 0
  17 +nos_out = 0
  18 +
  19 +for x in nos:
  20 + # Obtem os nós pais e filhos de cada nós
  21 + parents = model.get_parents(x)
  22 + children = model.get_children(x)
  23 +
  24 + if len(parents) != 0:
  25 + asc += 1
  26 + if len(children) != 0:
  27 + des += 1
  28 + nos_in += len(children)
  29 + nos_out += len(parents)
  30 +
  31 +#resposta à pergunta "quantos nós são descendentes? quantos são ascendentes?"
  32 +print("Nós ascendentes: ", asc)
  33 +print("Nós descendentes: ", des)
  34 +# resposta à pergunta "qual é o número médio de arestas "in"? e "out"?"
  35 +nos_in = nos_in/len(nos)
  36 +nos_out = nos_out/len(nos)
  37 +print("Número médio de arestas in: ", nos_in)
  38 +print("Número médio de arestas out: ", nos_out)
0 39 \ No newline at end of file
... ...
students/amartins/tarefas/tarefa1b.py 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +import bnlearn as bn
  2 +import networkx as nx
  3 +import pydot
  4 +from networkx.drawing.nx_pydot import graphviz_layout
  5 +
  6 +asia = bn.import_DAG("asia2.bif")
  7 +model = asia['model']
  8 +
  9 +# DiGraph do networkx
  10 +G = nx.DiGraph()
  11 +
  12 +for node in model.nodes:
  13 + G.add_node(node)
  14 +
  15 +for edge in model.edges:
  16 + G.add_edge(edge[0], edge[1])
  17 +
  18 +# objeto pydot
  19 +dot = pydot.Dot(graph_type='digraph')
  20 +
  21 +for node in model.nodes:
  22 + dot.add_node(pydot.Node(node))
  23 +
  24 +for edge in model.edges:
  25 + dot.add_edge(pydot.Edge(edge[0], edge[1]))
  26 +
  27 +# defina o layout do grafo
  28 +pos = graphviz_layout(G, prog='dot')
  29 +
  30 +# desenhe o grafo usando o networkx
  31 +nx.draw(G, pos, with_labels=True)
  32 +
  33 +# renderize o grafo com o pydot
  34 +graph = pydot.graph_from_dot_data(dot.to_string())[0]
  35 +graph.write_png('graph_asia2.png')
... ...
students/amartins/tarefas/v01-tarefa1a.py 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +import bnlearn as bn
  2 +
  3 +asia = bn.import_DAG("asia2.bif")
  4 +
  5 +model = asia['model'] # Cria um objeto BayesianModel
  6 +
  7 +
  8 +
  9 +nos = model.nodes()
  10 +print("Número de nós:", len(nos)) #resposta à pergunta "quantos nós tem a rede?"
  11 +
  12 +print("Lista de nós:", nos)
  13 +
  14 +nos_in = 0
  15 +nos_out = 0
  16 +
  17 +for x in nos:
  18 + # Obtem os nós pais e filhos de cada nós
  19 + parents = model.get_parents(x)
  20 + children = model.get_children(x)
  21 + #resposta à pergunta "quantos nós são descendentes? quantos são ascendentes?"
  22 + print("Pais de ", x, ": ", parents)
  23 + print("Filhos de ", x, " :", children)
  24 + nos_in += len(children)
  25 + nos_out += len(parents)
  26 +
  27 +# resposta à pergunta "qual é o número médio de arestas "in"? e "out"?"
  28 +nos_in = nos_in/len(nos)
  29 +nos_out = nos_out/len(nos)
  30 +print("Número médio de arestas in: ", nos_in)
  31 +print("Número médio de arestas out: ", nos_out)
0 32 \ No newline at end of file
... ...