Code Monkey home page Code Monkey logo

mikepa85 / label-propagation Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 2.29 MB

That was my project for my bachelor's degree. Variation and analysis of the label propagation algorithm. There are 480 diffrent ways to run the algorithm. With the framework you have the ability to observe the algorithm how it label and detected the communitys (only small networks). You also have the ability to run the algorithm via console.

Python 100.00%
label-propagation network-analysis python3

label-propagation's Introduction

README

Inhaltsverzeichnis

  1. Beschreibung
  2. Anforderungen
  3. Abhängigkeiten
  4. Entwicklungsrechner
  5. Ausführung des Frameworks
  6. Ausführen des Konsolenprogramms

Beschreibung

Mit dem Programm erfolgt eine visuelle Darstellung der Arbeitsweise des Label Propagation Algorithmus. Dazu bietet das Programm ein Framework an, indem eine .graphml Datei eingelesen werden kann, und durch unterschiedliche Einstellungen erfolgt die Community Ermittlung mittels des Algorithmus. Neben der Visualisierung des Graphen erfolgt eine Darstellung der Modularität in einem Plot sowie die Darstellung der Werte in einer Tabelle.

Sowohl der Graph nach Anwendung des Algorithmus wie auch die Tabelle mit den Werten können für spätere Zwecke gespeichert werden.

ACHTUNG: Das Framework sollte ausschließlich für kleinere Graphen verwendet werden. Zu große Graphen beeinträchtigen die Performance sowie die deutliche Darstellung des Netzwerkes.

Sollen größere Netzwerke untersucht werden, so bietet das Programm die Möglichkeit, die Visualisierung zu unterbinden, sodass ausschließlich der Graph mit den Einstellungen getestet wird. Zusätzlich bietet das Framework die Möglichkeit alle Varianten an einem Graphen zu testen.

Anmerkung: Je nach Größe des Graphen und Anzahl der Testläufe, die zu absolvieren sind, kann solch ein Test mehrere Stunden bis Tage in Anspruch nehmen.

Neben dem Framework ist es zusätzlich möglich, das Programm in der Konsole ausführen zu lassen. Eine Visualisierung des Graphen entfällt hier vollständig und dient eher dem Testen unterschiedlicher Varianten an einem oder mehreren Netzwerken. Gespeichert werden die Werte in einer.csv Datei.

Anforderungen

Das Programm wurde mit Python 3.

Abhängigkeiten

Folgende zusätzliche Packete wurden neben den Standard Packeten von Python genutzt. Es ist wichtig das diese Versionen verwendet werden.

Entwicklungsrechner

Das Programm wurde auf einem 64 Bit Windows 10 System entwickelt, mit einem AMD Ryzen 7 2700x und 16GB DDR4 Arbeitsspeicher.

Ausführung des Frameworks

Die Datei zum Starten des Programmes befindet sich im Ordner LabelPropagation/src/View/TestModul.py Zum Starten über die Konsole den Befehl python TestModul.py eingeben und das Framework öffnet sich. Über den Punkt "Open File" kann die .graphml Datei ausgewählt werden. Je nach Größe des Graphen nimmt das Laden der Datei etwas Zeit in Anspruch.

Nachdem die Datei eingelesen und der Graph dargestellt wurde, können über den Punkt Setup Einstellungen an dem Algorithmus durchgeführt werden. Default entspricht dem klassischen Label Propagation Algorithmus.

Ausführen des Konsolenprogramms

Die Datei zum Starten des Programmes befindet sich im Ordner LabelPropagation/src/ConsoleApp/Start.py Zum Starten über die Konsole den Befehl python Start.py eingeben und das Programm öffnet sich. Das Programm verlangt eine oder mehrere .graphml Dateien, die durch ein Leerzeichen getrennt werden. Sollte sich die Datei nicht in dem Ordner befinden, so muss der komplette Pfad, zu der Datei angegeben werden. Das Programm erzeugt von sich aus eine Ausgangsdatei, sodass diese nicht explizit verlangt wird. Nach Eingabe der verlangten Parameter wird der Algorithmus angestoßen.

Das Programm erzeugt nach Ausführung des Algorithmus zwei Dateien. Die erste Datei enthält die Werte zu jedem Testlauf, sofern mehrere durchgeführt wurden. Die zweite Datei enthält den Eintrag des Testlaufes, der die beste Modularität erreichte, nachdem der Algorithmus terminiert.

Angaben in der Tabelle

Die Tabelle ist so aufgebaut, dass zunächst der Name des Graphen erscheint, sowie die Einstellungen des Algorithmus, die gewählt wurden. Modularity: Beschreibt die Modularität, die am Ende des Algorithmus gemessen wurde Best Modularity: Beschreibt die beste Modularität, die wären des gesamten Testlaufes verzeichnet wurde. Terminate: Gibt an, ob Konvergenz vorliegt Iterations: Beschreibt wie viele Iterationen der Testlauf bis zum Terminieren benötigt. Compare: Bezeichnet den zweiten Algorithmus der zum Vergleich genutzt wurde Compare Modularity: Enthält den Eintrag des zweiten Algorithmus und die erreichte Modularität mit diesem. Test Run: Gibt an, welcher Testlauf diese Werte erreicht hat Fehlercode: Das Programm beschreibt vier Codes: 0: bedeutet der Algorithmus hat Konvergenz erreicht -1: Es kam zu einer Oszillation und der Algorithmus wurde abgebrochen -2: Es kam zu einer Schleifenbildung, der Algorithmus wurde abgebrochen -3: Die maximale Anzahl Iterationen wurde erreicht, der Algorithmus wurde abgebrochen Avg. Mod:* Beschreibt die durchschnittliche Modularität, die erreicht wurde Avg. Conv.:* Beschreibt die durchschnittliche Konvergenz des Algorithmus Avg Iter.:* Beschreibt wie viele Iterationen im Durchschnitt benötigt wurden Mod < 0, Mod = 0, Mod > 0* : Beschreibt den Wert der Modularität, ob dieser kleiner, gleich oder größer Null ist. Oszillation, Indirekte Osz. Abbruch:* Gibt an, wenn der Algorithmus nicht terminierte aus welchem Grund

Die mit * markierten Einträge werden für die spätere Auswertung verwendet und laufen in die jeweils zweite Datei ein, die das Programm nach Ausführung der Testläufe erstellt. Dadurch lässt sich ermitteln, wie oft lag Konvergenz vor, wie oft wurde eine Modularität größer, kleiner oder gleich null erreicht und wie oft wurde der Algorithmus aus welchem Grund abgebrochen.

label-propagation's People

Contributors

mikepa85 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.