首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能根据数据在现有地块上绘制计算出的质心值。

不能根据数据在现有地块上绘制计算出的质心值。
EN

Stack Overflow用户
提问于 2013-11-24 17:17:32
回答 1查看 994关注 0票数 10

编辑:好,如果数据是二维的,如下所示:

代码语言:javascript
复制
x = [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]
y = [8,7,5,4,3,7,8,3,2,1,9,11,16,18,19]

那么,如何计算k均值(3值)并进行绘图呢?

不能根据这里的数据在现有的地块上绘制计算出的质心值吗?我想要像下面的链接中所做的那样制作类似的图

http://glowingpython.blogspot.jp/2012/04/k-means-clustering-with-scipy.html

但是,我不明白。任何帮助都将不胜感激。

代码语言:javascript
复制
import numpy as np, matplotlib.pyplot as plt
from scipy.cluster.vq import kmeans, vq

data = np.array(np.random.rand(100))

plt.plot(data, 'ob')


centroids, variances= kmeans(data,3,10)
indices, distances= vq(data,centroids)

print (centroids)
[ 0.82847854  0.49085422  0.18256191]

plt.show()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-24 19:26:57

一个小编辑来回答你关于2d的问题:

您可以使用下面的原始答案,只需选择:

代码语言:javascript
复制
data = np.column_stack([x,y])

如果你想要画出质心,它是相同的,在下面的原始答案。如果要按选定的组对每个值进行着色,可以使用kmeans2

代码语言:javascript
复制
from scipy.cluster.vq import kmeans2

centroids, ks = kmeans2(data, 3, 10)

要绘制图,请选择k颜色,然后使用kmeans2返回的ks数组从三种颜色中选择该颜色:

代码语言:javascript
复制
colors = ['r', 'g', 'b']
plt.scatter(*data.T, c=np.choose(ks, colors))
plt.scatter(*centroids.T, c=colors, marker='v')

原来的答案:

正如@David所指出的,您的data是一维的,因此每个集群的质心也将是一维的。你的情节看起来像2d是因为当你运行

代码语言:javascript
复制
plt.plot(data)

如果data是1d,那么函数实际上所做的就是绘图:

代码语言:javascript
复制
plt.plot(range(len(data)), data)

要明确这一点,请参阅下面的示例:

代码语言:javascript
复制
data = np.array([3,2,3,4,3])
centroids, variances= kmeans(data, 3, 10)
plt.plot(data)

然后,质心将是一维的,因此它们在该图中没有x位置,因此您可以将它们绘制为直线,例如:

代码语言:javascript
复制
for c in centroids:
    plt.axhline(c)

如果您想找到x = range(len(data))y = data所在的x对的质心,那么必须将这些对传递给聚类算法,如下所示:

代码语言:javascript
复制
xydata = np.column_stack([range(len(data)), data])
centroids, variances= kmeans(xydata, 3, 10)

但我怀疑这不是你想要的。可能,您需要随机的xy值,所以尝试如下所示:

代码语言:javascript
复制
data = np.random.rand(100,2)
centroids, variances = kmeans(data, 3, 10)
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20177429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档