一些行/列全为零,因为那些相应的元素不存在于计算协方差的样本中。我是这样做的:
...
adjmats = [get_adjmat(graph) for graph in samples] # array of adjacency matrices
reduced = functools.reduce(lambda x, y: np.add(x, y), adjmats) # add all elem-wise
adjacency = np.divide(reduced, len(adjmats)) # divide by number: "mean"
fig, ax = plt.subplots()
covariance= np.cov(adjacency) # getting covariance
def correlation_from_covariance(covariance):
v = np.sqrt(np.diag(covariance))
outer_v = np.outer(v, v)
correlation = covariance / outer_v <<<<<< # complains here!
correlation[covariance == 0] = 0
return correlation
correlation = correlation_from_covariance(covariance) # attempting to convert
im = ax.imshow(correlation)
当我尝试获取相关矩阵时,我隐约知道它是协方差矩阵的标准“归一化”版本,numpy 抱怨:subunit_graph.py:218: RuntimeWarning: invalid value encountered in true_divide correlation = covariance / outer_v
,但我仍然得到一个合理的相关矩阵。有人可以向我解释那里到底发生了什么true_divide
吗?
非常感谢!