有没有一种方法可以使用相关系数作为连接的基础来绘制网络图?

Is there a way to draw the network diagram using correlation coefficient as the basis of connections?

我想根据列之间的相关性绘制网络图,例如。 我的数据有 200 行和 100 列,示例如下:

A(区域 1) B(1区) C(2区) D (Zone2) E(3区) F(3区) G(最终版)
2 23 21 4 4 34 33
4 -2 7 3 10 4 12
23 21 4 4 34 33 12
10 4 12 0 4 -2 7

所以我想看到的网络是根据它们的相关值的区域明智的列名称:

因此,如果两列之间没有良好的相关性 (<=0.3),则不应使用相关性将它们连接起来。 在 python?

中是否有算法或方法可以做到这一点

您可以使用以下工具:

import pandas
import itertools
import networkx
import matplotlib.pyplot as plt

data = pandas.read_csv('data.csv')

vertices = data.columns.values.tolist()
edges = [((u,v),data[u].corr(data[v])) for u,v in itertools.combinations(vertices, 2)]
edges = [(u,v,{'weight': c}) for (u,v),c in edges if c >= 0.3]

G = networkx.Graph()
G.add_edges_from(edges)

networkx.draw(G, with_labels=True, font_weight='bold')
plt.show()

另见这个问题: