Clustern eines Graphen mittles CPM

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
JayJu
User
Beiträge: 1
Registriert: Freitag 20. Februar 2015, 08:24

Hallo,

momentan arbeite ich an einer Ausarbeitung für die Uni und komme überhaupt nicht weiter. Meine Aufgabe ist es mit der Clique Percolation Methode einen Graphen zu clustern. Vorher habe ich noch nie mit Python gearbeitet und auch noch nie wirklich so groß programmiert. :?
Bis jetzt habe ich mittels einiger Bibliotheken meinen Graphen dargestellt und mit "k_clique_communities(G, k, cliques=None)" mir sämtliche communities anzeigen lassen. Das wars ja wahrscheinlich aber nicht?! Was muss ich jetzt noch machen um meinen Graphen mittels CPM komplett zu clustern? Und wie finde ich heraus welches die optimale Clusteranzahl ist? :K :K :K
Es wäre weltrettend wenn mir hier jemand auf einfachste Art und Wiese (weil ich keine Ahnung mehr hab) zeigen kann was ich jetzt genau machen muss. Danke

Hier mein bisheriger Code:

Code: Alles auswählen

import networkx as nx
import numpy as np
import scipy.spatial.distance as dist
import scipy.cluster.hierarchy as hier
from scipy.cluster import hierarchy
from scipy.spatial import distance
import matplotlib.pylab as plt
%matplotlib inline
np.set_printoptions(threshold='nan')

# Datei in Python einfügen
fobj = open('b.csv', 'r')
#for line in fobj:
    #print line .rstrip("0"+"&" +"1" +"2" +"3")
    #print line.replace(";"," ")
#print b[1,2]

# gerichteten Graphen erzeugen
netzwerk = nx.DiGraph()

# Auftrag und Maschine ohne Anfangswert
beor_id = 0 
bema_id = 0

#Listen für Begrenzung 1-49
Start_List=[]
Machine_List=[]
Order_List=[]

# "for" Schleife
for line in fobj.readlines()[1:]: 
    line = line.strip() 
    order_id, machine_id, time_start, time_end = line.split(';') 
    if beor_id == order_id: 
        netzwerk.add_edge(bema_id, machine_id) 
    bema_id = machine_id 
    beor_id = order_id 

    if float(time_start[0:3])>=1 and float(time_start[0:3])<=49:
        Start_List.append(time_start)
        Machine_List.append(machine_id)
        Order_List.append(order_id)  
    
# Datei schließen    
fobj.close()



Gneu=nx.DiGraph()

beor_id = 0 
bema_id = 0
for i in range(len(Machine_List)):
    
    if beor_id  == Order_List [i]: 
        Gneu.add_edge(bema_id, Machine_List [i]) 
    bema_id = Machine_List [i] 
    beor_id = Order_List [i]
    
    

uGneu=Gneu.to_undirected()
kcc=list(nx.k_clique_communities(uGneu,16))

print kcc
print list (kcc [0])

hhc=uGneu.subgraph(list (kcc [0]))
nx.draw(hhc, with_labels= True)
Zuletzt geändert von Anonymous am Dienstag 17. März 2015, 12:38, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Antworten