我正在运行我编写的networkx代码,我认为这行会导致问题:
nx.degree_assortativity_coefficient(G)
lib/python3.7/site-packages/networkx/algorithms/assortativity/correlation.py:288: RuntimeWarning: invalid value encountered in double_scalars
return (xy * (M - ab)).sum() / numpy.sqrt(vara * varb)
如果我进入网络x source code,可能是此功能导致了警告:
def numeric_ac(M):
# M is a numpy matrix or array
# numeric assortativity coefficient, pearsonr
try:
import numpy
except ImportError:
raise ImportError('numeric_assortativity requires ',
'NumPy: http://scipy.org/')
if M.sum() != 1.0:
M = M / float(M.sum())
nx, ny = M.shape # nx=ny
x = numpy.arange(nx)
y = numpy.arange(ny)
a = M.sum(axis=0)
b = M.sum(axis=1)
vara = (a * x**2).sum() - ((a * x).sum())**2
varb = (b * x**2).sum() - ((b * x).sum())**2
xy = numpy.outer(x, y)
ab = numpy.outer(a, b)
return (xy * (M - ab)).sum() / numpy.sqrt(vara * varb)
这是怎么了?
答案 0 :(得分:0)
这与您的图表有关。
例如,一个完整的图形总是会导致这样的问题,因为完整图形中的vara和varb都为0。除以0会导致“在double_scalars中遇到无效值”警告。
除了这种极端情况,我们也无法计算其他一些图的分类性。为了弄清楚原因,我强烈建议您检查公式的分类性:
https://en.wikipedia.org/wiki/Assortativity
请注意,无向图和有向图是不同的。后者可以具有4对配对。 (即(in,in),(out,out),(in,out),(out,in))