为什么networkx.degree_assortativity_coefficient会发出运行时警告?

时间:2019-02-19 10:49:41

标签: python python-3.x anaconda networkx

我正在运行我编写的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)

这是怎么了?

1 个答案:

答案 0 :(得分:0)

这与您的图表有关。

例如,一个完整的图形总是会导致这样的问题,因为完整图形中的vara和varb都为0。除以0会导致“在double_scalars中遇到无效值”警告。

除了这种极端情况,我们也无法计算其他一些图的分类性。为了弄清楚原因,我强烈建议您检查公式的分类性:

https://en.wikipedia.org/wiki/Assortativity

请注意,无向图和有向图是不同的。后者可以具有4对配对。 (即(in,in),(out,out),(in,out),(out,in))