-
bayes_induction.py: è il modulo principale che lancia l'esecuzione di K2 (Cooper & Herskovits, 1992) e renderizza il risultato nel file k2_result_N.svg dove 'N' è la grandezza del dataset. Deve ricevere come input la posizione del file CSV da cui leggere il dataset.
Esempio di riga di comando:
python bayes_induction.py file.csv
Per l'esecuzione si richiede la versione 3.8 di python con le seguenti dipendenze:
- pandas
- numpy
- graphviz
- pydot
- bnlearn
-
dataset_generator.py: questo è uno script che genera un dataset di grandezza arbitraria in formato CSV. Per eseguirlo bisogna che il pacchetto bnlearn sia installato (vedi qui). Esempio:
python dataset_generator.py 3000
-
K2.py: modulo python che fornisce l'implementazione dell'algoritmo K2.
-
gFunction.py: modulo python che fornisce l'implementazione della funzione 12 dell'articolo
.
-
node.py: fornisce una implementazione molto basilare della classe nodo.
-
global_vars.py: contiene due ordinamenti possibili utilizzati da
K2.k2_procedure()
. -
variables_constraint_parser.py: contiene la funzione che estrapola il dominio dei valori di ogni variabile dal file alarm_variables_constraints.txt
Per semplificare il tutto ho anche inserito lo script bash run_all_datasets.sh
che esegue K2 su datasets di grandezze diverse predefinite.
È disponibile anche una versione multiprocess del test scaricabile dal branch multithreading.
ATTENZIONE: utilizzo intenso di CPU! Non ci sono controlli sul numero di processi che vengono spawnati. Non mi assumo nessuna responsabilità per eventuali processori fusi.