我如何在这个数组中获取数据,如果条件使它成为python中距离最小的集群?

Posted

技术标签:

【中文标题】我如何在这个数组中获取数据,如果条件使它成为python中距离最小的集群?【英文标题】:how i can fetching data in this array and if condition for make it be an cluster with minimum distance in python? 【发布时间】:2016-08-25 08:28:02 【问题描述】:

我将在 python 中实现 kmeans,但我只是不知道处理与欧几里得距离的最小距离。 我一直在计算 3 个集群中的数据,

这是我的结果数组:

[array([4, 5], dtype=int64), 4.1231056256176606, 0, 
array([4, 8], dtype=int64), 4.4721359549995796, 0, 
array([14, 23], dtype=int64), 22.022715545545239, 0, 
array([4, 5], dtype=int64), 1.0, 1, 
array([4, 8], dtype=int64), 2.0, 1, 
array([14, 23], dtype=int64), 19.723082923316021, 1]

这是我的代码:

for i in range(len(centroidrandom)):
    for j in range(3):            
        jarak_=euclidean_distances(data[j],centroidrandom[:][i])
cluster.append(data[j])
 cluster.append(jarak_[0][0])
        cluster.append(i)
print(cluster)

【问题讨论】:

这可能有助于以包含有助于轻松重现问题的数据的方式细化您的问题。 这些数据=[[4,5],[4,8],[14,23]] 那么您能否将数据包含在代码中以显示您的问题? 看看这里的例子:glowingpython.blogspot.de/2012/04/… @BARIANTO 改进了格式,下次请使用 Drag & Ctrl+K 来格式化您的代码。 【参考方案1】:

以下是使用三个集群的 kmeans 集群的一些示例代码,根据上面评论中给出的示例进行了修改:

from pylab import plot,show
from numpy import vstack,array
from numpy.random import rand
from scipy.cluster.vq import kmeans,vq


# data generation for three sets of data
data = vstack((rand(150,2) + array([.5,.5]),rand(150,2), rand(150,2) + array([0,.5])))

# computing K-Means with K = 3 (3 clusters)
centroids,_ = kmeans(data,3)
# assign each sample to a cluster
idx,_ = vq(data,centroids)
print idx

# some plotting using numpy's logical indexing
plot(data[idx==0,0],data[idx==0,1],'ob',
     data[idx==1,0],data[idx==1,1],'or',
     data[idx==2,0],data[idx==2,1],'oy')
plot(centroids[:,0],centroids[:,1],'sg',markersize=8)
show()

【讨论】:

以上是关于我如何在这个数组中获取数据,如果条件使它成为python中距离最小的集群?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中获取任意大小的空列表?

如果条件为必需的字段验证

如何使它成为一个整数?

鼠标拖动选择不适用于触摸设备。我怎样才能使它成为可能?

如何使它成为嵌套的 For 循环?

如何检查数据库PHP Laravel中存在的复选框数组值?