Gus*_*sto 0 python hierarchical-clustering scipy
我想使用 scipy 的树状图。我有以下数据:
我有一个包含七种不同方式的列表。例如:
Y = [71.407452200146807, 0, 33.700136456196823, 1112.3757110973756, 31.594949722819372, 34.823881975554166, 28.36368420190157]
Run Code Online (Sandbox Code Playgroud)
每个平均值是为不同的用户计算的。例如:
X = ["user1", "user2", "user3", "user4", "user5", "user6", "user7"]
Run Code Online (Sandbox Code Playgroud)
我的目标是在树状图的帮助下显示上述数据。
我尝试了以下方法:
Y = [71.407452200146807, 0, 33.700136456196823, 1112.3757110973756, 31.594949722819372, 34.823881975554166, 28.36368420190157]
X = ["user1", "user2", "user3", "user4", "user5", "user6", "user7"]
# Attempt with matrix
#X = np.concatenate((X, Y),)
#Z = linkage(X)
Z = linkage(Y)
# Plot the dendogram with the results above
dendrogram(Z, leaf_rotation=45., leaf_font_size=12. , show_contracted=True)
plt.style.use("seaborn-whitegrid")
plt.title("Dendogram to find clusters")
plt.ylabel("Distance")
plt.show()
Run Code Online (Sandbox Code Playgroud)
但它说:
ValueError:压缩距离矩阵 'y' 的长度 n 必须是二项式系数,即必须有 ak 使得 (k \choose 2)=n)!
我已经尝试将我的数据转换为矩阵。和:
# Attempt with matrix
#X = np.concatenate((X, Y),)
#Z = linkage(X)
Run Code Online (Sandbox Code Playgroud)
但这也行不通!
有什么建议吗?
谢谢 :-)
的第一个参数linkage要么是一个 nxm 数组,表示 m 维空间中的 n 个点,要么是一个包含压缩距离矩阵的一维数组。这是两种截然不同的意思!第一个是原始数据,即观察值。第二种格式假设您已经计算了观测值之间的所有距离,并且您将这些距离提供给linkage,而不是原始点。
看起来你想要第一种情况(原始数据),m = 1。所以你必须重塑输入以具有形状(n,1)。
替换这个:
Z = linkage(Y)
Run Code Online (Sandbox Code Playgroud)
和:
Z = linkage(np.reshape(Y, (len(Y), 1)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |