Лабораторная работа №6 программирование лувенского алгоритма
Целью
лабораторной работы является освоение:
приемов
анализа социальных сетей;
метрик
и показателей социальных сетей;
Лувенского
алгоритма для анализа социальных сетей;
модулярности;
нахождения
мостов в социальных сетях,
формирования
данных для имитации социальных сетей.
Задание
на выполнение и ход лабораторной работы:
Разработать
программу на алгоритмическом языке
Python,
которая должна выполнить следующее:
в
соответствии с выданным вариантом
была «создана сеть», связанная со
случайно сгенерированным распределением
степеней.
Таблица
графа в Excel:
идентифицировать
сообщества в этой сети с использованием
Лувенского алгоритма.
Визуализировать
сообщества.
Листинг:
import
pandas as
pd
import
networkx as
nx
import
matplotlib.pyplot
as plt
import
numpy as
np
import
community as
cm
ex
= pd.read_excel("lab6.xlsx")
graph
= nx.Graph()
for
i in
range(1,len(ex)):
graph.add_node(i)
for
j in
range(1,len(ex[i])):
if
ex[i][j] ==
1:
graph.add_edge(i,j)
nx.draw(graph,
pos=nx.spring_layout(graph),
with_labels=True)
plt.show()
lv
= cm.community_louvain.best_partition(graph)
unique_coms =
np.unique(list(lv.values()))
colors
= {
0:
'pink',
1:
'red',
2:
'purple',
3:
'maroon'
}
node_colors
= [colors[v] for
_,v in
lv.items()]
pos
= nx.spring_layout(graph)
nx.draw(graph, pos, node_size
= 200,
alpha =
1,
node_color=node_colors)
plt.show()
Вывод:
Изначальный
граф:
Граф
после применения Лувенского метода: