notas.md
3.06 KB
Notas com Alice Martins
2024-01-30
Estrutura do Relatório
- Introdução - programação lógica; redes bayesianas; programação lógica probabilística. Ferramentas. Problema
- Desenvolvimento
- Exposição - desenvolvimento
- Crítica positiva - testes, documentação, funcionalidade
- Crítica negativa
- Conclusões
- Balanço do que foi feito, comparando os +/-,
- visão de problemas a resolver e outras tarefas futuras.
2023-05-04
Problemas
Tarefa 1A
- Está a contar os nós "in" e os nós "out" ao contrário, certo?
len(children)diz quantas arestas saem dex. - Em
python if len(parents) != 0: asc += 1 if len(children) != 0: des += 1deve serpython if len(parents) != 0: des += 1 if len(children) != 0: asc += 1porque o nóxé (mais) um descendente se tem ascendentes (e igualmente para ascendente).
Tarefa 1B
- Não deve misturar o código para definir o grafo
Gcom o código para o grafodot. Exceto se quiser percorrer apenas uma vezmodel.nodesemodel.edges.
Sugestões
- Use sempre, e só, o inglês no seu código, não só porque não se podem usar acentos, como
nós_in, mas também porque misturar português com inglês fica estranho (isto é, feio!). É melhornodes_indo quenos_in. - Use nomes descritivos nas suas variáveis:
nodeem vez dex. - Em vez de
asia = bn.import_DAG("asia2.bif")talvezdag = bn.import_DAG("asia2.bif")seja melhor (porquê?) - O código também fica mais simples se usar "f-strings": Em vez de
python print("Número de nós:", len(nos))usepython print(f"Número de nós: {len(nos)}")### Desafios
- Torne o seu código geral.
- Coloque a parte essencial da tarefa 1A numa função,
summary_dag(filename), que tem argumento umastringcom o nome do ficheiro e devolve umdictcom chavesdag_file,nodes,count_parents,count_children,count_in_edges,count_out_edges. - Use uma função
summary_str(d)que tem argumento umdictcomo acima e devolve umastringcom as perguntas e as respostas "bem formatadas". Por exemplo:text DAG file: asia2.bif Number of nodes: 8 Number of parents: 6 Number of children: 6 Average in-degree: 1.0 Average out-degree: 1.0 Nodes: asia tub ... - Por fim, combine as duas funções:
python summary = summary_dag("asia2.bif") message = summary_str(summary) print(message) - Coloque a parte essencial da tarefa 1B em funções
show_dag(model)esave_dag(model, target_filename).
- Coloque a parte essencial da tarefa 1A numa função,
- A biblioteca
bnlearné excessiva para estas tarefas. Não só precisa de várias dependências irrelevantes para o que pretendemos, por exemplo opytorch, como demora imenso tempo a ler o ficheiro. Procure uma alternativa mais simples. (n.b. não sei se existe!)