[英]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()
我认为您想要获得的是:标签列表,显示坐标所属的群集。 现在,您将在二维数组中获得x
和y
。 您可以通过首先将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.