繁体   English   中英

kmeans 聚类 python

[英]kmeans clustering python

有我想要聚类的坐标。 使用 kmeans 聚类的结果

[[0, 107], [0, 108], [0, 109], [0, 115], [0, 116],
[0, 117], [0, 118], [0, 125], [0, 126], [0, 127],
[0, 128], [0, 135], [0, 136], [0, 194], [0, 195],
[1, 107], [1, 108], [1, 109], [1, 110], [1, 114],
[1, 115], [1, 116], [1, 117], [1, 118], [1, 119]...]

使用 kmeans 聚类的结果

from sklearn.cluster import KMeans
num_clusters = 9
km = KMeans(n_clusters=num_clusters)
km_fit = km.fit(nonzero_pred_sub)

>>>array([7, 7, 7, 1, 1, 1, 1, 5, 5, 5, 5, 3, 3, 0, 0, 7, 7, 7, 7, 1, 1, 1,
   1, 1, 1, 5, 5, 5...]

我想知道第 i 个集群的坐标,例如,我需要第一个集群的元素,我可以假设 [0, 107], [0, 108], [0, 109] 被聚类到第 7 个集群中。 如何从集群中获取坐标?

我假设您希望坐标影响到第 7 个集群。 您可以通过将结果存储在字典中来做到这一点:

from sklearn.cluster import KMeans
km = KMeans(n_clusters=9)
km_fit = km.fit(nonzero_pred_sub)

d = dict() # dictionary linking cluster id to coordinates
for i in range(len(km_fit)):
  cluster_id = km_fit[i]

  if cluster_id not in d:
    d[cluster_id] = []
    
  d[cluster_id].append(nonzero_pred_sub[i])

# that way you can access the 7th cluster coordinates like this
d[7]

>>> [[0, 107], [0, 108], [0, 109], [1, 107], [1, 108], [1, 109], [1, 110], ...]

要删除循环中的“if”部分,您可以尝试查看defaultdict对象。

您当然也可以使用 pandas 数据帧来管理它,从而更轻松地处理更复杂的结果。

如果我误解了您的问题,并且您想要的是第 i 个集群的中心坐标,您可以通过调用km_fit.cluster_centers_[i]参见 doc )来获得。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM