-
CréateurSujet
-
mai 10, 2023 à 4:52 #26087
Bot
ParticipantSalut,
Tout est dans le titre. Je dois faire l’algo de Louvain en Python.
J’ai un code qui ne marche pas pour je ne sais quelle raison (génération avec chat)
J’envoie en réponse a ce message le codeSi jamais vous voyez pour quelle raison ca ne me renvoie pas le bon résultat, ou si vous avez un autre méthode, je suis preneur.
Merci.
——————–
Adamou02 – Envoyé depuis le Discord : Culte du code -
CréateurSujet
Vous lisez 1 fil de discussion
-
AuteurRéponses
-
-
mai 10, 2023 à 4:54 #26088
import random def louvain(graph): # Initialisation partitions = {node: i for i, node in enumerate(graph)} random.shuffle(list(graph.keys())) modularity = compute_modularity(graph, partitions) # Boucle principale while True: # Étape 1: optimisation de la modularité locale converged = False while not converged: converged = True for node in graph: current_community = partitions[node] best_community = current_community best_delta_modularity = 0 for neighbor in graph[node]: neighbor_community = partitions[neighbor] if neighbor_community == current_community: delta_modularity = compute_delta_modularity( graph, partitions, current_community, neighbor) if delta_modularity > best_delta_modularity: best_delta_modularity = delta_modularity best_community = neighbor_community if best_community != current_community: partitions[node] = best_community converged = False if converged: break # Étape 2: agrégation des communautés locales communities = {} for node, community in partitions.items(): if community not in communities: communities[community] = set() communities[community].add(node) new_partitions = {node: i for i, nodes in enumerate(communities.values()) for node in nodes} new_modularity = compute_modularity(graph, new_partitions) if new_modularity - modularity < 1e-10: break partitions = new_partitions modularity = new_modularity return partitions
——————–
Adamou02 – Envoyé depuis le Discord : Culte du code -
mai 10, 2023 à 4:54 #26089
def compute_modularity(graph, partitions): m = len(graph.edges()) q = 0 for i, community in enumerate(set(partitions.values())): nodes = [node for node, comm in partitions.items() if comm == community] subgraph = graph.subgraph(nodes) lc = len(subgraph.edges()) dc = sum(graph.degree(node) for node in nodes) q += lc / m - (dc / (2 * m)) ** 2 return q def compute_delta_modularity(graph, partitions, current_community, neighbor): m = len(graph.edges()) lc = sum( 1 for node in graph.neighbors(neighbor) if partitions[node] == current_community ) dc = sum(graph.degree(node) for node in graph) k_i = graph.degree(neighbor) k_i_in = sum( graph.degree(node) for node in graph.neighbors(neighbor) if partitions[node] == current_community ) delta_modularity = ( 2 * lc / m - 2 * k_i * k_i_in / (2 * m * m) - 2 * lc / (2 * m) + 2 * k_i * dc / (2 * m * m) ) return delta_modularity # Construire le graphe directement en Python graph = { 'A': ['B', 'C', 'D'], 'B': ['A', 'E', 'F'], 'C': ['A', 'G', 'H'], 'D': ['A', 'I', 'J'], 'E': ['B'], 'F': ['B'], 'G': ['C'], 'H': ['C'], 'I': ['D'], 'J': ['D'] } # Exemple d'utilisation de l'algorithme de Louvain if __name__ == '__main__': communities = louvain_algorithm(graph) print(communities)
——————–
Adamou02 – Envoyé depuis le Discord : Culte du code
-
-
AuteurRéponses
Vous lisez 1 fil de discussion
- Vous devez être connecté pour répondre à ce sujet.
Sujets récents
-
Problème espace
par
Bot
il y a 7 heures -
problème écran bleu
par
Bot
il y a 10 heures et 10 minutes -
je viens de coder un truc qui permet de détecter une attaque DDoS. en python besoin d’amélioration
par
Bot
il y a 13 heures et 40 minutes -
comment faire joeur la musique en boucle la meme j’ai essayé un loop et while sa marche pas
par
Bot
il y a 1 jour et 13 heures -
problème sur vscode
par
Bot
il y a 2 jours et 1 heure
Réponses récentes
-
Bot sur Problème espace
-
Bot sur Problème espace
-
Bot sur Problème espace
-
Bot sur Problème espace
-
Bot sur Problème espace
Statistiques des Forums
- Comptes enregistrés
- 2 054
- Forums
- 51
- Sujets
- 269
- Réponses
- 2 787
- Mot-clés du sujet