Python Scikit learn和scipy使用欧几里德度量的凝聚聚类给出不同的结果

Python Scikit learn和scipy使用欧几里德度量的凝聚聚类给出不同的结果,python,machine-learning,scikit-learn,hierarchical-clustering,Python,Machine Learning,Scikit Learn,Hierarchical Clustering,我试图为不同的说话人嵌入对时间戳进行聚类,如果使用欧几里德作为亲和力,使用ward作为链接,则效果最好。我尝试使用scipy的hierarchy.flcusterdata匹配输出,并尝试了不同的阈值,但是我得到了完全随机的结果 但是,如果余弦用作关联,而完整用作链接,我可以匹配这两种算法的输出。欧几里得度量结果偏斜的原因是什么?代码如下: clt=AgglomerativeClustering(n_clusters=k, affinity='euclidean', linkage='ward')

我试图为不同的说话人嵌入对时间戳进行聚类,如果使用欧几里德作为亲和力,使用ward作为链接,则效果最好。我尝试使用scipy的hierarchy.flcusterdata匹配输出,并尝试了不同的阈值,但是我得到了完全随机的结果

但是,如果余弦用作关联,而完整用作链接,我可以匹配这两种算法的输出。欧几里得度量结果偏斜的原因是什么?代码如下:

clt=AgglomerativeClustering(n_clusters=k, affinity='euclidean', linkage='ward')
res = clt.fit_predict(embeddings)

res=hierarchy.fclusterdata(embeddings,t=0.95,criterion='distance',method='ward',metric='euclidean')
我以这种方式将数据用于两个集群,假设嵌入是一个时间戳的numpy数组

尝试使用criteria='maxclust'代替。这样可以指定所需的群集数

res = hierarchy.fclusterdata(embeddings, k, criterion='maxclust', method='ward', metric='euclidean')