11 KiB
11 KiB
In [ ]:
import networkx as nx
import matplotlib.pyplot as plt
# On reprend l'esprit du réseau des séances précédentes, en ajoutant un lien
# Alice-Claire pour former un triangle d'amitié fermé (Alice, Bob, Claire)
G = nx.Graph()
G.add_edges_from([
("Alice", "Bob"),
("Bob", "Claire"),
("Alice", "Claire"), # ferme le triangle
("Bob", "David"),
("David", "Emma"),
])
plt.figure()
nx.draw(G, with_labels=True, node_color="lightblue", node_size=1000)
plt.show()In [ ]:
clustering_individuel = nx.clustering(G)
print("Coefficient de clustering de chaque personne :")
for personne, c in clustering_individuel.items():
print(f" {personne} : {round(c, 2)}")
print("\nCoefficient de clustering moyen du réseau :", round(nx.average_clustering(G), 2))In [ ]:
# Un réseau généré automatiquement de 30 "individus", où les nouvelles personnes
# ont tendance à se connecter aux personnes déjà bien connectées (comme sur un vrai réseau social)
grand_reseau = nx.barabasi_albert_graph(30, 2, seed=42)
degres = [d for _, d in grand_reseau.degree()]
plt.figure()
plt.hist(degres, bins=range(min(degres), max(degres) + 2), edgecolor="black")
plt.xlabel("Degré (nombre de connexions)")
plt.ylabel("Nombre d'individus")
plt.title("Distribution des degrés sur un réseau de 30 personnes")
plt.show()
print("Degré minimum :", min(degres))
print("Degré maximum :", max(degres))
print("Degré moyen :", round(sum(degres) / len(degres), 2))In [ ]:
# On revient à notre petit réseau à 5 personnes
print("Transitivité globale du petit réseau :", round(nx.transitivity(G), 2))
print("Coefficient de clustering moyen (rappel) :", round(nx.average_clustering(G), 2))
print("\nTransitivité globale du grand réseau (30 personnes) :", round(nx.transitivity(grand_reseau), 2))
print("Coefficient de clustering moyen du grand réseau :", round(nx.average_clustering(grand_reseau), 2))