Indholdsfortegnelse:
Video: Computational Linguistics, by Lucas Freitas 2025
Grafer er nyttige for datavidenskabsfolk. A graf er en gengivelse af data, der viser forbindelserne mellem datapunkter ved hjælp af linjer i Pythopn. Formålet er at vise, at nogle datapunkter vedrører andre datapunkter, men ikke alle de datapunkter, der vises på grafen.
Tænk på et kort over et undergrundssystem. Hver af stationerne forbinder til andre stationer, men ingen enkelt station forbinder alle stationer i metroen. Grafer er et populært datalogisk emne på grund af deres brug i socialmedieanalyse. Når du udfører socialmedieanalyse, afbilder og analyserer du netværk af relationer, såsom venner eller forretningsforbindelser, fra sociale hubs som Facebook, Google+, Twitter eller LinkedIn.
De to almindelige billeder af grafer er ikke-styrede , hvor grafen simpelthen viser linjer mellem dataelementer og rettet , hvor pile føjes til linjeshowet disse data flyder i en bestemt retning. For eksempel overveje en skildring af et vandsystem. Vandet vil i de fleste tilfælde strømme i kun en retning, så du kan bruge en rettet graf til ikke kun at vise forbindelserne mellem kilder og mål for vandet, men også for at vise vandretningen ved hjælp af pile.
Udvikling af uindirekte grafer
En ikke-rettet graf viser simpelthen forbindelser mellem knudepunkter. Udgangen giver ikke retning fra et knudepunkt til det næste. For eksempel, når der oprettes forbindelse mellem websider, er der ingen vejledning. Følgende eksempel viser, hvordan du opretter en uindrettet graf.
import networkx som nx import matplotlib. pyplot som plt G = nx. Graf () H = nx. Grafik () G. add_node (1) G. add_nodes_from ([2, 3]) G. add_nodes_from (rækkevidde (4, 7)) H. add_node (7) G. add_nodes_from (H) G. add_edge (1, 2) (Add) 5, 7), (6, 7)]) G. add_edges_from (H. Kanter ()) nx. draw_networkx (G) plt. show ()
Dette eksempel bygger grafen ved hjælp af en række forskellige teknikker. Det begynder ved at importere Networkx-pakken. For at oprette en ny uindrettet graf kalder koden grafen () -konstruktoren, som kan tage et antal inputargumenter, der skal bruges som attributter. Du kan dog opbygge en perfekt brugbar graf uden at bruge attributter, hvilket er hvad dette eksempel gør.
Den nemmeste måde at tilføje en node på er at kalde add_node () med et node nummer. Du kan også tilføje en liste, ordbog eller rækkevidde () af noder, der bruger add_nodes_from (). Faktisk kan du importere noder fra andre grafer, hvis du vil.
Selvom de noder, der bruges i eksemplet, er afhængige af tal, behøver du ikke bruge numre til dine noder. En node kan bruge et enkelt bogstav, en streng eller endda en dato. Noder har nogle begrænsninger. For eksempel kan du ikke oprette en node ved hjælp af en boolsk værdi.
Noder har ikke nogen forbindelse i starten. Du skal definere forbindelser (kanter) mellem dem. For at tilføje en enkelt kant kalder du add_edge () med numrene på de noder, du vil tilføje. Som med noder kan du bruge add_edges_from () til at oprette mere end en kant ved hjælp af en liste, en ordbog eller en anden graf som input. Her er output fra dette eksempel (din output kan afvige lidt, men skal have de samme forbindelser).
Uregistrerede grafer forbinder knudepunkter sammen for at danne mønstre.Udvikling af rettede grafer
Du bruger ledede grafer, når du skal vise en retning, fra et startpunkt til et slutpunkt. Når du får et kort, der viser dig, hvordan du kommer fra et bestemt punkt til et andet, er startnoden og slutnoden markeret som sådan, og linjerne mellem disse knuder (og alle mellemknudepunkter) viser retning.
Dine grafer behøver ikke at være kedelige. Du kan klæde dem op på alle måder, så seeren får yderligere oplysninger på forskellige måder. Du kan f.eks. Oprette brugerdefinerede etiketter, bruge bestemte farver til bestemte noder eller stole på farve for at hjælpe folk med at se betydningen bag dine grafer.
Du kan også ændre kantlinjens vægt og bruge andre teknikker til at markere en bestemt sti mellem knuder som den bedre at vælge. Følgende eksempel viser mange (men ikke næsten alle) måder, hvorpå du kan klæde en rettet graf og gøre det mere interessant:
importer networkx som nx import matplotlib. pyplot som plt G = nx. G. Add_node (1, 2) G. add_nodes_from ([2, 3]) G. add_nodes_from (rækkevidde (4, 6)) G. add_path ([6, 7, 8] G. add_edges_from ([(1, 4), (4, 5), (2, 3), (3, 6), (5, 6)]) farver = ['r', 'g', 'g', 'g', 'g', 'm', 'm', 'r'] etiketter = {1: 'Start', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: 'End'} størrelser = [800, 300, 300, 300, 300, 600, 300, 800] nx. draw_networkx (G, node_color = farver, node_shape = "D", with_labels = True, labels = etiketter, node_size = størrelser) plt. show ()
Eksemplet begynder ved at oprette en retningsdiagram ved hjælp af DiGraph () konstruktøren. Du skal bemærke, at NetworkX-pakken også understøtter MultiGraph () og MultiDiGraph () graftyper. Tjek denne liste over alle graftyperne.
Tilføjelse af knudepunkter ligner meget på at arbejde med en uindrettet graf. Du kan tilføje enkelte noder ved hjælp af add_node () og flere noder ved hjælp af add_nodes_from (). Add_path () -opkaldet giver dig mulighed for at oprette noder og kanter på samme tid. Ordren af noder i opkaldet er vigtige. Strømmen fra et node til en anden er fra venstre til højre i listen, der leveres til opkaldet.
Tilføjelse af kanter er meget det samme som at arbejde med en ikke-direkte graf. Du kan bruge add_edge () for at tilføje en enkelt kant eller add_edges_from () for at tilføje flere kanter ad gangen. Imidlertid er rækkefølgen af node numrene vigtig.Strømmen går fra venstre knude til højre knudepunkt i hvert par.
Dette eksempel tilføjer specielle nodefarver, etiketter, form (kun en form bruges) og størrelser til udgangen. Du ringer stadig på draw_networkx () for at udføre opgaven. Men tilføjelse af de viste parametre ændrer grafens udseende. Bemærk, at du skal indstille with_labels til True for at se de etiketter, der leveres af etiketparameteren. Her er output fra dette eksempel.
Brug rettede grafer til at vise retning mellem knuder.