【发布时间】:2012-02-14 22:30:58
【问题描述】:
所以你有一个数组
1
2
3
60
70
80
100
220
230
250
为了更好地理解:
如何在 python(v2.6) 中对数组中的三个区域进行分组/聚类,所以在这种情况下你会得到三个包含
的数组[1 2 3] [60 70 80 100] [220 230 250]
背景:
y 轴是频率,x 轴是数字。这些数字是由它们的频率表示的十个最高振幅。我想从中创建三个离散数字以进行模式识别。可能有更多点,但所有点都按相对较大的频率差异分组,如您在本例中看到的大约 50 和大约 0 之间以及大约 100 和大约 220 之间。请注意,什么是大的,什么是小的变化,但是与组/集群的元素之间的差异相比,集群之间的差异仍然显着。
【问题讨论】:
-
这并不是一个 Python 问题。您首先必须选择一个合适的聚类算法,然后看看如何在 Python 中实现(或者如果它已经实现,例如在 SciPy 中)。
-
如果问题和数据集总是这样,您可以自己使用“自制”启发式算法,并对其进行微调以处理您的数据。但如果复杂度比这多一点,我认为你不能不学习答案中指出的许多好的建议和算法。
-
并不总是“像这样”。区别在于: 1. 更多的数字。 2. 集群之间的差距不同。 3.簇中元素之间的不同差距。剩下的就是元素间隙和簇间隙之间的差异是显着的,换句话说:Delta(elements)
-
事实上,stats.stackexchange.com 会是一个更好的询问地点,而且那里可能已经有几个重复了。
标签: python cluster-analysis data-mining pattern-recognition