来自层次聚类的k均值的初始种子

时间:2017-01-25 11:21:57

标签: python cluster-analysis

所以我有大约一百万行,我需要对它们进行聚类。我开始绘制随机样本并计算层次聚类以获得树形图。有了这个,我知道有多少个集群。

现在我想在整个样本上使用K-Means聚类,使用上一步的初始种子 - 层次聚类。但我不知道如何获得那些初始种子。

下面是层次聚类的代码:

from scipy.cluster.hierarchy import linkage
from sklearn import preprocessing as prep

seed = 85
df_s = df.sample(frac=0.01, replace=False)
df_s = df_s.reset_index(drop=True)

scaler = prep.MinMaxScaler()

df_std = scaler.fit_transform(df_s[clmns])

Z = linkage(df_std, 'ward')

然后对于K-Means,我知道我可以这样称呼它:

from scipy.cluster.vq import kmeans2
centroid, label = kmeans2(df[clmns], 3)

我知道论证minit是用种子插入n x p矩阵,但我不清楚如何获得它们。

此问题最初发布在交叉验证中。但由于它更多是关于编程,因此建议我在此处发布。

1 个答案:

答案 0 :(得分:1)

由于层次聚类不是基于质心的,

  1. 你必须自己计算集群质心(简单)
  2. 通过层次聚类找到的聚类可能是k-means
  3. 的一个相当糟糕的起点