You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于NetworkX的Python评分量表数据聚类分析及可视化技术问询

数据重构与NetworkX可视化实现方案

一、数据重构步骤

你的原始数据是长格式(每行对应一个项目的一次评分),首先需要转成宽格式(每行对应一个完整的观测样本,列是各个症状项目),方便计算项目间的关联度:

  • 给每个观测样本分组:原始数据每5行是一个样本,添加Sample_ID列标记分组(比如Sample_1、Sample_2、Sample_3)。
  • 用pandas的pivot方法转成宽格式,最终结构如下:
Sample_IDHappyDepressedAnxiousIrritatedConfused
Sample_113420
Sample_215341
Sample_304431
  • 计算两个核心指标:每个症状的平均评分(用于设置节点直径)、症状间的关联度(比如皮尔逊相关系数,用于设置边的权重/粗细)。

二、NetworkX网络构建与可视化代码示例

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

# 1. 加载并重构数据
data = pd.DataFrame({
    "Item": ["Happy", "Depressed", "Anxious", "Irritated", "Confused"]*3,
    "Rating": [1,3,4,2,0, 1,5,3,4,1, 0,4,4,3,1]
})
# 添加样本ID分组
data["Sample_ID"] = ["Sample_1"]*5 + ["Sample_2"]*5 + ["Sample_3"]*5
# 转换为宽格式
wide_data = data.pivot(index="Sample_ID", columns="Item", values="Rating")

# 2. 计算节点属性:平均评分(放大后作为节点直径)
mean_ratings = wide_data.mean().to_dict()
node_sizes = [v * 1000 for v in mean_ratings.values()]

# 3. 计算边的权重:症状间的皮尔逊相关系数绝对值
corr_matrix = wide_data.corr()
items = wide_data.columns.tolist()
edges = []
for i in range(len(items)):
    for j in range(i+1, len(items)):
        edge_weight = abs(corr_matrix.loc[items[i], items[j]])
        edges.append((items[i], items[j], edge_weight))

# 4. 构建图并可视化
G = nx.Graph()
G.add_nodes_from(items)
G.add_weighted_edges_from(edges)

# 用弹簧布局让关联强的节点更靠近
pos = nx.spring_layout(G, k=0.5, weight='weight')

# 绘制元素
nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color='lightblue')
nx.draw_networkx_edges(G, pos, width=[w*5 for (u,v,w) in edges], edge_color='gray')
nx.draw_networkx_labels(G, pos, font_size=12)

plt.title("Symptom Clustering Network")
plt.axis('off')
plt.show()

三、实用资源

  • NetworkX基础操作:优先看官方文档的「Tutorial」和「Reference」,重点掌握图的创建、节点/边属性设置、各类布局算法(spring_layout、circular_layout等)。
  • 聚类分析(社区检测):NetworkX内置多种社区检测算法,比如nx.community.louvain_communities(Louvain方法,适合无向图)、nx.community.girvan_newman(基于边介数的划分),可直接用于提取症状聚类。
  • 数据处理技巧:熟练掌握pandas的pivot、groupby、corr方法,是处理这类评分数据的核心。
  • 可视化优化:可结合matplotlib调整颜色映射、节点样式,或用pyvis生成交互式网络(适合大样本数据)。

内容的提问来源于stack exchange,提问作者B.Nin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:55:29