我正在尝试对时间序列进行聚类。簇内元素具有相同的形状但不同的尺度。因此,我想使用相关性度量作为聚类指标。我正在尝试相关性或皮尔逊系数距离(欢迎任何建议或替代方案)。但是,当我运行 Z = links(dist) 时,以下代码会返回错误,因为 dist 中有一些 NaN 值。time_series 中没有 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)`
但这会产生一些运行时警告并花费大量时间。