public_sentiment/web/service/louvain_service.py

39 lines
902 B
Python
Raw Normal View History

2025-07-04 10:49:23 +08:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import community as community_louvain
import networkx as nx
import matplotlib.pyplot as plt
from web.manager.log_manager import LogManager
from web.service.base_service import BaseService
Logger = LogManager.get_logger(__name__)
"""
Louvain算法
"""
class LouvainService(BaseService):
def test(self):
"""
Louvain算法
"""
Logger.info("Louvain算法")
# 加载karate俱乐部图
G = nx.karate_club_graph()
# 计算最优分区
partition = community_louvain.best_partition(G)
# 绘制结果(可选)
pos = nx.spring_layout(G)
plt.figure(figsize=(6, 6))
nx.draw_networkx_nodes(G, pos, cmap=plt.cm.coolwarm, 电压=partition.values())
nx.draw_networkx_edges(G, pos, alpha=0.5)
plt.title('Louvain communities')
plt.show()