【问题标题】:Re-using cluster_centers for another K-mean clustering重新使用 cluster_centers 进行另一个 K-mean 聚类
【发布时间】:2018-06-24 12:03:00
【问题描述】:

我有一个维度矩阵 (nw,ny,nx),其中 nx 和 ny 是图像的维度(光子计数),对于每个像素,我有一个 nw 个波长点的光谱分布。

我已经从 scikit-learn python 包中应用了 K-mean 聚类,聚类数等于 ncl=5。

dat =dat1.reshape(nw,nx*ny)
mm[:]=KMeans(n_clusters=ncl).fit(np.transpose(dat)).labels_
x=KMeans(n_clusters=ncl).fit(np.transpose(dat)).cluster_centers_

然后绘制 x[i,:] (i= cluster label) 我可以看到由 Kmeans 生成的 5 个不同的平均光谱剖面。 现在我的问题如下:我想在相同维度(nw、ny、nx)的不同数据集中使用这 5 个 cluster_centers 来检索我在这里称为 mm 的标签。我该怎么做?

提前感谢您的宝贵时间。

【问题讨论】:

  • 你能更精确一点吗?您只是要求对新数据调用 predict 吗?在这种情况下,扔掉集群对象并没有帮助!您在上面多次计算这些集群!确保您了解自己在做什么(并了解 sklearn 的面向对象方法)。
  • 除了@sascha 注释之外,由于您要多次计算集群,可能会发生(通常在未设置 random_state 时发生)您存储在 mm[:] 中的标签与集群不匹配你第二次进去了。

标签: python scikit-learn k-means


【解决方案1】:

正如@sascha 指出的,您需要持久化 KMeans 对象以预测未来数据

dat = dat1.reshape(nw,nx*ny)
clusterer = KMeans(n_clusters=ncl).fit(np.transpose(dat)

dat2 = dat2.reshape(nw,nx*ny)
dat2_labels = clusterer.predict(np.transpose(dat2))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 2015-07-29
    • 2014-05-02
    • 2013-03-23
    • 2017-06-30
    • 2016-07-28
    • 2017-09-12
    • 2017-07-17
    相关资源
    最近更新 更多