2024-06-23 19:07:57 发布
网友
我一直在使用scipy.cluster.vq.kmeans来进行一些k-means聚类,但是我想知道是否有方法来确定每个数据点(假设)与哪个质心相关联。
scipy.cluster.vq.kmeans
显然您可以手动执行此操作,但据我所知,kmeans函数不返回此值?
在scipy.cluster.vq中还有一个函数kmeans2也返回标签。
scipy.cluster.vq
kmeans2
In [8]: X = scipy.randn(100, 2) In [9]: centroids, labels = kmeans2(X, 3) In [10]: labels Out[10]: array([2, 1, 2, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 2, 2, 1, 2, 1, 2, 1, 2, 0, 1, 0, 2, 0, 1, 2, 0, 1, 0, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 2, 0, 0, 2, 2, 0, 1, 0, 0, 0, 2, 2, 2, 0, 0, 1, 2, 1, 0, 0, 0, 2, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 2, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 2, 0, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 2])
否则,如果必须使用kmeans,也可以使用vq获取标签:
kmeans
vq
In [17]: from scipy.cluster.vq import kmeans, vq In [18]: codebook, distortion = kmeans(X, 3) In [21]: code, dist = vq(X, codebook) In [22]: code Out[22]: array([1, 0, 1, 0, 2, 2, 2, 0, 1, 1, 0, 2, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 2, 2, 1, 2, 0, 1, 1, 0, 2, 2, 0, 1, 0, 1, 0, 2, 1, 2, 0, 2, 1, 1, 1, 0, 1, 2, 0, 1, 2, 2, 1, 1, 1, 2, 2, 0, 0, 2, 2, 2, 2, 1, 0, 2, 2, 2, 0, 1, 1, 2, 1, 0, 0, 0, 0, 1, 2, 1, 2, 0, 2, 0, 2, 2, 1, 1, 1, 1, 1, 2, 0, 2, 0, 2, 1, 1, 1])
Documentation: scipy.cluster.vq
在
scipy.cluster.vq
中还有一个函数kmeans2
也返回标签。否则,如果必须使用
kmeans
,也可以使用vq
获取标签:Documentation: scipy.cluster.vq
相关问题 更多 >
编程相关推荐