scipy.pdist() returns NaN 值

scipy.pdist() returns NaN values

我正在尝试对时间序列进行聚类。簇内元素具有相同的形状,但比例不同。因此,我想使用相关性度量作为聚类的度量。我正在尝试相关或皮尔逊系数距离(欢迎任何建议或替代方案)。 但是,当我 运行 Z = linkage(dist) 时,以下代码 returns 出错,因为 dist 中有一些 NaN 值。 time_series 中没有 NaN 值,

证实了这一点
np.any(isnan(time_series))

其中 returns 错误

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)`

但这会产生一些 运行时间警告并且会花费很多时间。

scipy.pdist(time_series, metric='correlation')

如果您看一下 manualcorrelation 选项除以差值。所以可能是你有两个相同的时间戳,将 zero 除以 zero 得到 NaN.