代码之家  ›  专栏  ›  技术社区  ›  user2614596

scipy。pdist()返回NaN值

  •  2
  • user2614596  · 技术社区  · 7 年前

    但是,当我运行Z=linkage(dist)时,以下代码返回错误,因为dist中有一些NaN值。在time_序列中没有NaN值,这由

    np.any(isnan(time_series))
    

    返回False

    from scipy.spatial.distance import pdist
    from scipy.cluster.hierarchy import dendrogram, linkage
    
    dist = pdist(time_series, metric='correlation') 
    Z = linkage(dist)
    fig = plt.figure()
    dn = dendrogram(Z)
    plt.show()
    

    作为替代,我将使用皮尔逊距离

    from scipy.stats import pearsonr
    
    def pearson_distance(a,b):
        return 1 - pearsonr(a,b)[0]
    
    dist = pdist(time_series, pearson_distance)`
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dorian    7 年前
    scipy.pdist(time_series, metric='correlation')
    

    如果你看看 manual 这个 correlation zero 通过 给了我们 NaN