繁体   English   中英

如何用kmeans集群“标记” csv?

[英]How to “Tag” csv with kmeans clusters?

我的python代码读取csv并提取纬度经度,然后通过kmeans运行它们。 我有一个与每个纬度经度关联的“ placeName”字段。 我的问题是我希望能够写出新的csv文件或以某种方式标记数据,以便可以看到哪个csv行与哪个群集相关联。 kmeans的坐标采用数组但没有诸如“ name”或“ id”之类的属性时,该如何完成?

import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.vq import kmeans2, whiten

coordinates= np.array([
           [lat, long],
           [lat, long],
            ...
           [lat, long]
           ])
x, y = kmeans2(whiten(coordinates), 3, iter = 20)  
plt.scatter(coordinates[:,0], coordinates[:,1], c=y);
plt.show()

我认为您想要获得的是:标签列表,显示坐标所属的群集。 现在,您将在二维数组中获得xy 您可以通过首先将x in中的每个元素映射到标签,然后将该标签映射应用于y来获取标签列表。

label = {(x[i,0], x[i,1]):i for i in range(x.shape[0])}
cluster_ids = [label[(a[0],a[1])] for a in y]

cluster_ids是所需的集群ID列表。

暂无
暂无

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

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