使用聚类绘制直方图

时间:2012-08-15 13:59:42

标签: python cluster-analysis histogram frequency

我试图研究这个问题,但失败了。我是python的初学者,所以请耐心等待。

我有一个包含每行数字的文本文件(它们是以度为单位的角度)。 我想首先将角度聚类为20的簇大小。然后我想在直方图上绘制它。我有以下代码:

angle = open(output_dir+'/chi_angle.txt', 'r').read().splitlines()
array = numpy.array(map(float, angle))
hello = list(array)
from cluster import *
cl = HierarchicalClustering(hello, lambda x,y: abs(x-y))
clusters = cl.getlevel(20)
frequency = [len(x) for x in clusters]
average = [1.0*sum(x)/len(x) for x in clusters]

现在。我的问题是:我如何绘制直方图?

执行以下操作:

pylab.hist(average, bins=50)
pylab.xlabel('Chi 1 Angle [degrees]')
pylab.ylabel('#')
pylab.show()

将显示正确放置条形图的直方图(即每个聚类的平均值),但它不显示有多少"角度"每个群集包含。

只是为了澄清。群集数据如下所示:

clusters = [[-60.26, -30.26, -45.24], [163.24, 173.24], [133.2, 123.23, 121.23]]

我想要每个聚类的平均值,以及每个聚类中的角度数。在直方图上,第一个条将位于-50左右,高度为3.如何绘制这个?

非常感谢!

2 个答案:

答案 0 :(得分:0)

为什么不立刻使用直方图?

群集中心的直方图不是您数据的合理表示。

答案 1 :(得分:0)

不确定我理解你的问题。无论如何尝试在这个数组中保存直方图

 H=hist(average, bins=50)

如果您想绘制它,请执行

 plot(H[1][1:],H[0])

H[1]是一个数组,用于存储垃圾箱中心和H[0]每个垃圾箱中的计数。我希望这会有所帮助。