gpt4 book ai didi

python - 交换 Python scipy 树状图/链接的叶子

转载 作者:行者123 更新时间:2023-12-03 17:05:01 25 4
gpt4 key购买 nike

我为我的数据集生成了一个树状图,但我不满意某些级别的拆分是如何排序的。因此,我正在寻找一种方法来交换单个拆分的两个分支(或叶子)。

如果我们查看底部的代码和树状图,有两个标签 1125从大集群的其余部分分离出来。我真的对此很不满意,并希望与11 的分支和 25成为 split 的右分支,集群的其余部分成为左分支。显示的距离仍然相同,因此数据不会改变,只是美观。

这能做到吗?如何?我专门进行手动干预,因为最佳叶排序算法在这种情况下可能不起作用。

import numpy as np

# random data set with two clusters
np.random.seed(65) # for repeatability of this tutorial
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[10,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[20,])
X = np.concatenate((a, b),)

# create linkage and plot dendrogram
from scipy.cluster.hierarchy import dendrogram, linkage
Z = linkage(X, 'ward')

plt.figure(figsize=(15, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(
Z,
leaf_rotation=90., # rotates the x axis labels
leaf_font_size=12., # font size for the x axis labels
)
plt.show()

enter image description here

最佳答案

我有一个类似的问题,并通过在链接中使用 optimization_ordering 选项解决了。我附上了你的案例的代码和结果,这可能不是你喜欢的,但对我来说似乎有了很大的改进。

import numpy as np
import matplotlib.pyplot as plt

# random data set with two clusters
np.random.seed(65) # for repeatability of this tutorial
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[10,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[20,])
X = np.concatenate((a, b),)

# create linkage and plot dendrogram
from scipy.cluster.hierarchy import dendrogram, linkage
Z = linkage(X, 'ward', optimal_ordering = True)

plt.figure(figsize=(15, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(
Z,
leaf_rotation=90., # rotates the x axis labels
leaf_font_size=12., # font size for the x axis labels
distance_sort=False,
show_leaf_counts=True,
count_sort=False
)
plt.show()

result of using optimal_ordering in linkage

关于python - 交换 Python scipy 树状图/链接的叶子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48539558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com