应该使用什么相似性度量来对这些序列进行分类?

时间:2015-02-09 13:51:29

标签: algorithm numpy scipy pattern-matching classification

我有96个48个浮点数的序列。有三种不同的分组(大小未知)。最初,我不知道哪个序列属于哪个组。我的目标是创建一个算法来找到它。最好以图形方式显示(见下文 - 灰度表示的浮点数的大小):

enter image description here

我的目标是从左边的未分类图像转到右边的图像。

我的想法是对序列进行某种形式的分析,并将最接近的匹配分组。分析可能是:

  • 甲。找到高峰和低谷的位置
  • B中。一些形式 频率/其他领域分析

我可以想象如何做选项A.但是我对选项B很粗略,并且我确信我不知道有几种方法。

我的问题很高:

  1. 有人可以推荐一类我可以用来做这个的算法吗?

  2. 任何人都可以推荐开发此类算法的程序或起点(欢迎使用书籍章节建议)吗?

  3. 我也很满意书籍章节等的建议。我通常使用Numpy / Scipy - 因此标签,但这个问题并不是真正的语言。

2 个答案:

答案 0 :(得分:1)

看起来峰和谷完全对齐,只有深度不同。我试着:

  • 对序列进行线性标准化,使其平均值和方差对齐,即[1,0,1,0]和[5,-5,5,-5]均归一化为[1,-1 ,1,-1]。

  • 然后计算序列差异的平方和,并将其视为距离。

显然,这只是一个起点。这可能不会开箱即用,因此请查看错误分类,以检查导致它们的原因以及如何解决这些问题。

答案 1 :(得分:1)

只是一个想法(没有时间写一个完整的答案):

  1. 似乎一个群体中的成员主要因某种缩放而不同,所以首先要做一些“正常化”,正如拉法尔所建议的那样。

  2. 在归一化之后,组内的所有成员将是在N维空间中大致指向相同方向的向量。然后,您可以将它们分成几组使用clustering algorithm,例如使用kmeans函数。