1e8b2315
Francisco Coelho
Notas com AMartin...
|
3
4
5
6
7
8
9
10
11
12
13
14
15
|
## 2023-05-04
### Problemas
#### Tarefa 1A
1. Está a contar os nós "in" e os nós "out" ao contrário, certo? `len(children)` diz quantas arestas saem de `x`.
2. Em
```python
if len(parents) != 0:
asc += 1
if len(children) != 0:
des += 1
|
1e8b2315
Francisco Coelho
Notas com AMartin...
|
32
33
34
35
|
- **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_!). É melhor `nodes_in` do que `nos_in`.
- Use nomes descritivos nas suas variáveis: `node` em vez de `x`.
- Em vez de `asia = bn.import_DAG("asia2.bif")` talvez `dag = bn.import_DAG("asia2.bif")` seja melhor (**porquê?**)
- O código também fica mais simples se usar "f-strings": Em vez de
|
d080b400
Francisco Coelho
Paper draft: Exte...
|
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
```python
print("Número de nós:", len(nos))
```
use
```python
print(f"Número de nós: {len(nos)}")
```
### Desafios
1. **Torne o seu código geral.**
1. Coloque a parte essencial da tarefa 1A numa função, `summary_dag(filename)`, que tem argumento uma `string` com o nome do ficheiro e devolve um `dict` com chaves `dag_file`, `nodes`, `count_parents`, `count_children`, `count_in_edges`, `count_out_edges`.
2. Use uma função `summary_str(d)` que tem argumento um `dict` como acima e devolve uma `string` com 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
...
```
3. Por fim, combine as duas funções:
```python
summary = summary_dag("asia2.bif")
message = summary_str(summary)
print(message)
```
4. Coloque a parte essencial da tarefa 1B em funções `show_dag(model)` e `save_dag(model, target_filename)`.
2. **A biblioteca `bnlearn` é excessiva para estas tarefas.** Não só precisa de várias dependências irrelevantes para o que pretendemos, por exemplo o `pytorch`, como demora imenso tempo a ler o ficheiro. _Procure uma alternativa mais simples._ (**n.b.** não sei se existe!)
|