我在试着把时间序列聚在一起。簇内元素具有相同的形状,但尺度不同。因此,我想使用关联度量作为聚类的度量。我正在尝试相关或皮尔逊系数距离(欢迎任何建议或替代)。但是,以下代码在运行Z=联动( dist )时会返回错误,因为dist中有一些NaN值。在NaN中没有time_series值,这是由
np.any(isnan(time_series))返回假的
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()作为替代,我将使用pearson距离。
from scipy.stats import pearsonr
def pearson_distance(a,b):
return 1 - pearsonr(a,b)[0]
dist = pdist(time_series, pearson_distance)`但是这会产生一些运行时警告,并且需要花费大量的时间。
发布于 2017-11-15 16:57:22
scipy.pdist(time_series, metric='correlation')如果您看一下手册,correlation选项除以差额。因此,您可能有两个相同的时间戳,zero除以zero给出了NaN。
https://stackoverflow.com/questions/47312972
复制相似问题