Indholdsfortegnelse:
Video: Introduktion til hvordan jeg arbejder med psykoterapi 2025
De fleste datavidenskabsmænd skal arbejde med grafdata på et eller andet tidspunkt. Python giver dig den funktionalitet. Forestil dig datapunkter, der er forbundet til andre datapunkter, f.eks. Hvordan en webside er forbundet til en anden webside via hyperlinks. Hvert af disse datapunkter er en node . Noderne forbinder hinanden ved hjælp af links .
Ikke hver knude forbinder til hver anden knude, så knudeforbindelserne bliver vigtige. Ved at analysere noderne og deres links kan du udføre alle mulige interessante opgaver inden for datalogi, såsom at definere den bedste måde at komme fra arbejde til dit hjem ved hjælp af gader og motorveje.
Forstå tilstødende matrix
En adjacency matrix repræsenterer forbindelserne mellem noder i en graf. Når der er en forbindelse mellem et knudepunkt og et andet, angiver matrixen det som en værdi større end 0. Den nøjagtige repræsentation af forbindelser i matricen afhænger af om grafen er rettet (hvor forbindelsens retning er vigtig) eller uregistreret.
Et problem med mange online eksempler er, at forfatterne holder dem enkle til forklaring. Imidlertid er grafikker i virkeligheden ofte enorme og udfordrer let analyse simpelthen gennem visualisering. Tænk bare på antallet af noder, som endda en lille by ville have, når man overvejer gadekrydsninger. Mange andre grafer er langt større, og blot at se på dem vil aldrig afsløre nogen interessante mønstre. Dataforskere kalder problemet ved at præsentere en kompleks graf ved hjælp af en adjacency matrix a hairball .
En nøgle til at analysere adjacency matricer er at sortere dem på bestemte måder. Du kan f.eks. Vælge at sortere dataene efter andre egenskaber end de faktiske forbindelser. En graf over gadeforbindelser kan omfatte datoen, hvor gaden sidst blev banet med dataene, hvilket gør det muligt for dig at søge efter mønstre, der leder nogen baseret på de gader, der er i bedste reparation. Kort sagt, at gøre grafdataene nyttige bliver et spørgsmål om at manipulere organisationen af disse data på bestemte måder.
Brug af NetworkX-basics
At arbejde med grafer kunne blive svært, hvis du skulle skrive hele koden fra bunden. Heldigvis gør NetworkX-pakken til Python det nemt at oprette, manipulere og studere strukturen, dynamikken og funktionerne i komplekse netværk (eller grafer). Du kan også bruge pakken til at arbejde med digrafer og multigrafer også.
Hovedvægten i NetworkX er at undgå hele problemet med hårboller.Brug af enkle opkald skjuler meget af kompleksiteten af at arbejde med grafer og adjacency matricer fra visning. Nedenstående eksempel viser, hvordan man opretter en grundlæggende adjacency-matrix fra en af de netværksleverede grafer:
import networkx som nx G = nx. cycle_graph (10) A = nx. adjacency_matrix (G) print (A. todense ())
Eksemplet begynder ved at importere den nødvendige pakke. Den opretter så en graf ved hjælp af cycle_graph () skabelonen. Grafen indeholder ti noder. Opkald adjacency_matrix () opretter adjacency-matrixen fra grafen. Det sidste trin er at udskrive output som en matrix som vist her:
[[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 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 1 0 1 0] [0 0 0 0 0 0 0 1 0 1] [1 0 0 0 0 0 0 0 1 0]]
Du behøver ikke bygg din egen graf fra bunden til forsøgsformål. NetworkX-webstedet dokumenterer en række standardgraftyper, som du kan bruge, som alle er tilgængelige i IPython.
Det er interessant at se, hvordan grafen ser efter, hvordan du genererer den. Følgende kode viser grafen for dig.
Plotning af den oprindelige graf.import matplotlib. pyplot som plt nx. draw_networkx (G) plt. show ()
Plottet viser, at du kan tilføje en kant mellem knuder 1 og 5. Her er den kode, der er nødvendig for at udføre denne opgave ved hjælp af add_edge () -funktionen.
Plotning af grafillæggelsen.G. add_edge (1, 5) nx. draw_networkx (G) plt. show ()