in Networkx, wie kann ich Knoten basierend auf Knotenfarbe gruppieren? Zum Beispiel habe ich 100 Knoten, einige von ihnen sind nahe an Schwarz, während andere nahe am Weiß sind. Im Graph-Layout möchte ich, dass Knoten mit ähnlicher Farbe nahe beieinander bleiben und Knoten mit sehr unterschiedlicher Farbe voneinander entfernt bleiben. Wie kann ich das machen? Wie beeinflusst das Kantengewicht das Layout von spring_layout? Wenn NetworkX das nicht kann, können dann noch andere Tools helfen, das Layout zu berechnen?
Danke
Ok, lassen Sie uns die Adjazenzmatrix W für dieses Diagramm nach dem einfachen Verfahren erstellen: Wenn beide der benachbarten Scheitelpunkte i-te und j-te die gleiche Farbe haben, dann ist das Gewicht der Kante zwischen ihnen W_ {i, j} eine große Zahl (die Sie später in Ihren Experimenten einstellen werden), ansonsten ist es eine kleine Zahl was Sie analog herausfinden werden.
Lasst uns jetzt Laplace der Matrix schreiben L = D - W, wobei D eine Diagonalmatrix mit Elementen d_ {i, i} ist, die gleich der Summe der W-ten Reihe ist.
Nun kann man leicht zeigen, dass der Wert von fLf ^ T, wobei f ein beliebiger Vektor ist, ist klein, wenn Scheitelpunkte mit großen Einstellungsgewichten nahe f-Werte haben. Sie können darüber nachdenken, wie Sie ein Koordinatensystem für einen Graphen mit i festlegen können - der Scheitelpunkt hat f_i-Koordinate im 1D-Raum.
Nun wollen wir eine Anzahl solcher Vektoren wählen, die uns die Darstellung des Graphen als eine Menge von Punkten in einem euklidischen Raum geben, in dem zum Beispiel k-means funktioniert: Jetzt haben Sie den i-ten Scheitel von der anfängliche Graph mit den Koordinaten f ^ 1_i, f ^ 2_i, ... und auch benachbarte Vektoren der gleichen Farbe auf dem anfänglichen Graphen sind in diesem neuen Koordinatenraum dicht.
Die Frage, wie Vektoren f zu wählen sind, ist einfach: Man nehme einfach einige Eigenvektoren der Matrix L als f, die kleinen aber nicht null Eigenwerten entsprechen.
Dies ist eine bekannte Methode namens spektrales Clustering .
Weiterführende Literatur: Die Elemente des statistischen Lernens: Data Mining, Inferenz und Vorhersage. von Trevor Hastie, Robert Tibshirani und Jerome Friedman
ist auf der Autorenseite Ссылка
kostenlos erhältlichTags und Links python cluster-analysis graphviz data-visualization networkx