Cuprins:
Video: Map of Computer Science 2024
Majoritatea oamenilor de știință din date trebuie să lucreze cu date grafice la un moment dat. Python vă oferă această funcție. Imaginați punctele de date care sunt conectate la alte puncte de date, cum ar fi modul în care o pagină web este conectată la o altă pagină web prin intermediul unor hyperlink-uri. Fiecare dintre aceste puncte de date este un nod . Nodurile se conectează între ele folosind link-urile .
Nu fiecare nod se leagă la fiecare alt nod, astfel încât conexiunile nodurilor devin importante. Analizând nodurile și legăturile acestora, puteți efectua tot felul de sarcini interesante în domeniul științei datelor, cum ar fi definirea celui mai bun mod de a ajunge de la locul de muncă la domiciliu folosind străzi și autostrăzi.
Înțelegerea matricei de adiacență
O matrice de adiacență reprezintă conexiunile dintre nodurile unui grafic. Atunci când există o conexiune între un nod și altul, matricea o indică ca o valoare mai mare decât 0. Reprezentarea precisă a conexiunilor în matrice depinde de faptul dacă graficul este direcționat (unde direcția conexiunii contează) sau nedirecționată.
O problemă cu multe exemple on-line este că autorii le păstrează simple în scopuri explicative. Cu toate acestea, graficele din lumea reală sunt adesea imense și se sfidează ușor de analiză prin simpla vizualizare. Gândiți-vă doar la numărul de noduri pe care le-ar avea chiar și un mic oraș atunci când se analizează intersecțiile stradale. Multe alte grafice sunt mult mai mari, și pur și simplu le privim nu vor dezvălui niciodată modele interesante. Cercetătorii de date numesc problema prezentând orice grafic complex folosind o matrice de adjacență ballball .
O cheie pentru analizarea matricelor de adjacență este de a le sorta în moduri specifice. De exemplu, puteți alege să sortați datele în funcție de alte proprietăți decât de conexiunile reale. Un grafic al conexiunilor pe stradă ar putea include data la care ultima a fost pavată pe stradă cu datele, făcând posibilă căutarea de modele care direcționează pe cineva pe baza străzilor care se află în cea mai bună reparație. Pe scurt, folosirea datelor grafice devine o chestiune de manipulare a organizării acelor date în moduri specifice.
Folosind Elementele de bază ale NetworkX
Lucrul cu graficele ar putea deveni dificil dacă trebuia să scrieți tot codul de la zero. Din fericire, pachetul NetworkX pentru Python facilitează crearea, manipularea și studiul structurii, dinamicii și funcțiilor unor rețele complexe (sau grafice). Puteți utiliza pachetul pentru a lucra cu digraphs și multigraphs, de asemenea.
Principalul accent al NetworkX este de a evita întreaga problemă a mingii de păr.Utilizarea apelurilor simple ascunde mare parte din complexitatea lucrului cu graficele și matricile de apropiere de vedere. Exemplul următor arată cum se creează o matrice de bază de adjacență dintr-unul din graficele furnizate de NetworkX:
import networkx ca nx G = nx. ciclu_graf (10) A = nx. adjacency_matrix (G) print (A. todense ())
Exemplul începe prin importarea pachetului necesar. Apoi creează un grafic folosind șablonul cicl_graph (). Graficul conține zece noduri. Apelarea adjacency_matrix () creează matricea adjacency din grafic. Pasul final este de a imprima rezultatul ca o matrice, după cum se arată aici: <1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0] [0 0 0 1 0 1 0 0 0 0] [0 0 0 0 1 0 0 0 0 0] [0 0 0 0 0 0 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]]
Nu trebuie să construiți propriul graf de la zero pentru scopuri de testare. Site-ul NetworkX documentează un număr de tipuri de grafice standard pe care le puteți utiliza, toate fiind disponibile în cadrul IPython.
Este interesant să vezi cum arată graficul după ce l-ai generat. Următorul cod afișează graficul pentru dvs.
Plasarea graficului inițial.
import matplotlib. piplot ca plt nx. draw_networkx (G) plt. show ()Graficul arată că puteți adăuga o margine între nodurile 1 și 5. Iată codul necesar pentru a efectua această sarcină utilizând funcția add_edge ().
Plotarea adăugării graficului.
G. add_edge (1, 5) nx. draw_networkx (G) plt. arată ()