Clustering ist eine einfache Datenanalysemethode, mit der sich leicht nützliche Ergebnisse erzielen lassen. Nicht nur Daten, die ursprünglich eine Netzwerkstruktur haben, sondern auch Daten, die keine Netzwerkstruktur haben, können durch Definieren einer Entfernungsfunktion vernetzt und geclustert werden. In diesem Eintrag wird erläutert, wie Sie Clustering durchführen und die Ergebnisse visualisieren.
Was ist überhaupt eine Netzwerkstruktur? Im Allgemeinen handelt es sich um Daten, die aus Knoten und Kanten bestehen. Die Kanten können gerichtet sein oder nicht Ein Graph mit einer Richtung wird als gerichteter Graph bezeichnet, und ein Graph ohne Richtung wird als ungerichteter Graph bezeichnet. Einige Kanten haben Gewichte, andere nicht, andere werden als gewichtete Diagramme bezeichnet.
Aufteilen eines Datensatzes in mehrere Gruppen (Teilmengen). Teilen Sie jede Teilmenge so, dass sie einige gemeinsame Merkmale aufweist In der Netzwerkanalyse wird es manchmal als Community-Erkennung bezeichnet. Bei der Analyse von Daten wird häufig die Methode verwendet, um jede Beziehung zu berechnen, zu vernetzen, zu gruppieren und als Gruppe zu visualisieren, um die Struktur der Daten zu verstehen. Dies ist eine nützliche Methode, mit der Informationen leicht abgerufen werden können.
Der diesmal eingeführte Algorithmus ist ein Algorithmus, der darauf abzielt, eine Division durchzuführen, die die Modularität des Netzwerks maximiert. Die Modularität ist ein Indikator dafür, wie dicht das Netzwerk ist als ein zufälliges Netzwerk. In einem Vergleichspapier aus dem Jahr 2010 erhielt es die beste Bewertung beim Extrahieren von Communities aus Netzwerken (http://arxiv.org/abs/0906.0612).
Ein bekannter Clustering-Algorithmus ist K-means. Da K-means die Nähe jedes Knotens widerspiegelt, kann gesagt werden, dass es sich um einen Algorithmus handelt, der nur die Verbindung erster Ordnung berücksichtigt. Der diesmal eingeführte Algorithmus dient zum Clustering des Netzwerks. Der Unterschied zu K bedeutet
Das ist der Punkt.
Fast unfolding of communities in large networks, Vincent D Blondel, Jean-Loup Guillaume, Renaud Lambiotte, Renaud Lefebvre, Journal of Statistical Mechanics: Theory and Experiment 2008(10)
Aus dem folgenden Bitbucket
https://bitbucket.org/taynaud/python-louvain
Wir werden einen typischen Datensatz eines sozialen Netzwerks namens karate_club visualisieren.
karate_community.py
import community
import networkx as nx
import matplotlib.pyplot as plt
G = nx.karate_club_graph()
partition = community.best_partition(G)
size = float(len(set(partition.values())))
pos = nx.spring_layout(G)
count = 0.
for com in set(partition.values()):
count += 1.
list_nodes = [nodes for nodes in partition.keys() if partition[nodes] == com]
nx.draw_networkx_nodes(G, pos, list_nodes, node_size=20, node_color = str(count/size) )
plt.show()
Wie oben erwähnt, ist es möglich, ein Diagramm nur mit Python zu zeichnen. Wenn das Netzwerk groß wird, ist es häufig praktisch, interaktive Operationen durch Zeichnen ausführen zu können, z. B. nur den größten verbundenen Graphen zu verwenden oder Kanten unter einem bestimmten Gewicht zu löschen. Es gibt verschiedene Grafikvisualisierungswerkzeuge, aber dieses Mal werden wir anhand von CytoScape als Beispiel vorstellen, wie die Ergebnisse der Clusterbildung im Visualisierungstool wiedergegeben werden.
Die diesmal eingeführte Bibliothek basiert auf NetworkX. Das von NetworkX dargestellte Netzwerk kann in einem Datenformat geschrieben werden, das mit verschiedenen Visualisierungssoftware verknüpft werden kann.
Lassen Sie es uns diesmal im GraphML-Format schreiben
Knoten können verschiedene Attributinformationen haben. Dies kann durch Übergeben eines Diktats mit der Knoten-ID als Schlüssel erfolgen. Auf diese Weise können Sie Daten darüber speichern, wie jeder Knoten geclustert ist. Exportieren Sie dies im GML-Format.
import community
import networkx as nx
G = nx.karate_club_graph()
partition = community.best_partition(G)
labels = dict([(i, str(i)) for i in xrange(nx.number_of_nodes(G))])
nx.set_node_attributes(G, 'label', labels)
nx.set_node_attributes(G, 'community', partition)
nx.write_gml(G, "community.gml")
Geben Sie nach dem Start im Dialogfeld eine Datei aus Aus Netzwerkdatei an und lesen Sie sie. (Oder Datei-> Import-> Netzwerk-> Datei)
Ich bin sicher, Sie sind sich nicht sicher, aber das liegt daran, dass Sie das Layout nicht angegeben haben. Geben Sie zunächst den Anzeigealgorithmus an. Wenn Sie Layout-> yFiles Layouts-> Organic auswählen, sieht die Anzeige wie folgt aus.
Es wurde so angezeigt.
Als nächstes wird das Ergebnis der Clusterbildung in diesem Diagramm wiedergegeben. Dieses Mal ändern wir die Farbe des Knotens entsprechend dem Cluster. Verwenden Sie das Menü Stil der Systemsteuerung, um die Farbe und Größe des Diagramms zu ändern. Wenn die Systemsteuerung nicht angezeigt wird, zeigen Sie sie mit Ansicht-> Bedienfeld anzeigen an.
Verwenden Sie Füllfarbe, um die Farbe zu ändern. Sie können entscheiden, unter welchen Bedingungen die Einstellungen auf der Karte zugewiesen werden. Klicken Sie auf die Karte des Elements, das Sie ändern möchten
Solche Elemente werden angezeigt. Legen Sie die bedingten Datenelemente in Spalte fest. In set_node_attributes festgelegte Elemente können ausgewählt werden. Lassen Sie uns die Community auswählen
Wählen Sie unter Zuordnungstyp die Bedingungen aus, unter denen die Definition geändert wird. Es gibt 3 Arten
Dieses Mal ist die Anzahl der Cluster nur 4 und die Größe des Werts bedeutungslos. Wählen Sie daher Diskrete Zuordnung. Wenn Sie es auswählen, wird das folgende Pulldown-Menü angezeigt. Wählen Sie die Farbe aus und geben Sie sie an.
Mit dieser Einstellung ändert sich die Farbe des ersten Diagramms folgendermaßen. Ich konnte die Ergebnisse des Clusters visualisieren.
In diesem Eintrag haben wir den Ablauf vom Netzwerkclustering zur Visualisierung vorgestellt. Die Netzwerkanalyse ist relativ einfach, aber es ist eine Methode, mit der Sie leicht interessante Ergebnisse erzielen können. Wenn Sie also interessiert sind, probieren Sie es bitte aus!
Recommended Posts