如何将HAC结果绘制为散点图(scipy linkage)

时间:2016-08-10 11:33:26

标签: python matplotlib plot scipy

我正在使用scipy链接进行群集。我想知道将结果绘制成散点图的最简单方法是什么:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

from scipy.cluster.hierarchy import dendrogram, linkage 
from sklearn.manifold import MDS

n = 10
X = [np.random.rand(10) + 1 for i in range(n)]
X = np.concatenate((X, [np.random.rand(10) - 1 for i in range(n)]), 0)

mds = MDS(n_components=2)
X_r = mds.fit(X).embedding_  

# Plot MDS result
plt.figure(figsize=(5,5))
plt.title("MDS")
plt.scatter(X_r[:,0], X_r[:, 1])

lnk = linkage(X)

# Plot dendogram
plt.figure(figsize=(5,5))
plt.title("Dendogram")
dendrogram(lnk)

# Plot 'lnk' into scatter plot ..

结果

enter image description here enter image description here

缺少的是另一个彩色MDS图,以反映群集分配。

1 个答案:

答案 0 :(得分:0)

假设有两个群集,您可以fclusterlnk一起使用

# Plot 'lnk' into scatter plot ..
from scipy.cluster.hierarchy import fcluster
fc = fcluster(lnk, 2, criterion='maxclust')
plt.figure(figsize=(5,5))
plt.scatter(X_r[:,0],X_r[:,1],c=fc)

然后用c作为颜色绘制散点图。这给了,

enter image description here