Sommario:
Video: Data Analysts Tools - 5 Crucial Data Tools [2019] 2025
Molti scienziati di dati devono lavorare con i dati del grafico a un certo punto. Python ti dà quella funzionalità. Immaginate i punti dati che sono collegati ad altri punti dati, come il modo in cui una pagina web è collegata a un'altra pagina web tramite collegamenti ipertestuali. Ciascuno di questi punti dati è un nodo . I nodi si connettono tra loro usando i collegamenti .
Non tutti i nodi si collegano a ogni altro nodo, quindi le connessioni del nodo diventano importanti. Analizzando i nodi e i loro collegamenti, è possibile eseguire tutti i tipi di attività interessanti in scienza dei dati, come ad esempio definire il modo migliore per andare dal lavoro a casa usando strade e autostrade.
Comprensione della matrice di adiacenza
Una matrice di adiacenza rappresenta le connessioni tra i nodi di un grafico. Quando c'è una connessione tra un nodo e l'altro, la matrice lo indica come un valore maggiore di 0. La rappresentazione precisa delle connessioni nella matrice dipende dal fatto che il grafico sia diretto (dove la direzione della connessione è importante) o non diretto.
Un problema con molti esempi online è che gli autori li mantengono semplici per scopi di spiegazione. Tuttavia, i grafici del mondo reale sono spesso immensi e sfidano facilmente l'analisi semplicemente attraverso la visualizzazione. Basti pensare al numero di nodi che avrebbe anche una piccola città quando si considerano le intersezioni stradali. Molti altri grafici sono molto più grandi, e semplicemente guardarli non rivelerà mai modelli interessanti. I ricercatori di dati chiamano il problema nel presentare qualsiasi grafico complesso usando una matrice di adiacenza a hairball .
Una chiave per analizzare le matrici di adiacenza è ordinarle in modi specifici. Ad esempio, è possibile scegliere di ordinare i dati in base a proprietà diverse dalle connessioni effettive. Un grafico delle connessioni stradali potrebbe includere la data in cui la strada è stata pavimentata per ultimi con i dati, rendendo possibile la ricerca di modelli che indirizzino qualcuno in base alle strade che si trovano nella migliore riparazione. In breve, rendere i dati del grafico utili diventa una questione di manipolazione dell'organizzazione di quei dati in modi specifici.
Usare le basi di NetworkX
Lavorare con i grafici potrebbe diventare difficile se dovessi scrivere tutto il codice da zero. Fortunatamente, il pacchetto NetworkX per Python semplifica la creazione, la manipolazione e lo studio della struttura, delle dinamiche e delle funzioni di reti complesse (o grafici). Puoi usare il pacchetto anche per lavorare con digraphs e multigraphs.
L'enfasi principale di NetworkX è evitare l'intera questione dei boli di pelo.L'uso di semplici chiamate nasconde gran parte della complessità di lavorare con grafici e matrici di adiacenza dalla vista. L'esempio seguente mostra come creare una matrice di adiacenza di base da uno dei grafici forniti da NetworkX:
import networkx come nx G = nx. cycle_graph (10) A = nx. adjacency_matrix (G) print (A. todense ())
L'esempio inizia con l'importazione del pacchetto richiesto. Quindi crea un grafico usando il modello cycle_graph (). Il grafico contiene dieci nodi. Calling adjacency_matrix () crea la matrice di adiacenza dal grafico. Il passo finale è stampare l'output come matrice, come mostrato qui:
[[0 1 0 0 0 0 0 0 0 1] [1 0 1 0 0 0 0 0 0 0] [0 1 0 1 0 0 0 0 0 0] [0 0 1 0 1 0 0 0 0 0] [0 0 0 1 0 1 0 0 0 0] [0 0 0 0 1 0 1 0 0 0] [0 0 0 0 0 1 0 1 0 0] [0 0 0 0 0 0 1 0 1 0] [0 0 0 0 0 0 0 1 0 1] [1 0 0 0 0 0 0 0 1 0]]
Non devi crea il tuo grafico da zero a scopo di test. Il sito NetworkX documenta una serie di tipi di grafici standard che è possibile utilizzare, tutti disponibili in IPython.
È interessante vedere come il grafico si cura dopo averlo generato. Il codice seguente mostra il grafico per te.
importa matplotlib. pyplot come plt nx. draw_networkx (G) plt. show ()
Il grafico mostra che è possibile aggiungere un bordo tra i nodi 1 e 5. Ecco il codice necessario per eseguire questa operazione utilizzando la funzione add_edge ().
G. add_edge (1, 5) nx. draw_networkx (G) plt. show ()
