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)