2015-02-09 13 views
3

我有96个序列的48个浮点数。有三个不同的分组(未知大小)。最初,我不知道哪个序列属于哪个组。我的目标是创建一个算法来找到它。这最好以图示出(见下文 - 上的灰度级表示的浮标的大小):应该使用什么相似性度量来对这些序列进行分类?

enter image description here

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

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

  • A.寻找峰
  • B.某种形式 频率/位置和波谷其他域分析

我能想象如何做选择。然而我对选项B粗略一下,我确信我不知道几种方法。

我的问题是高级别:

  1. 谁能推荐的,我可以用它来做到这一点的算法类别?

  2. 任何人都可以推荐一个程序或开始这样的算法(书章建议欢迎)?

我也很乐意与书籍章节等我通常使用与NumPy/SciPy的建议 - 因此标签,但这个问题是不是真的特定的语言。

+0

我不明白什么定义了序列之间的距离(相似性度量?)。不过,这似乎属于“分类”类问题。 – 2015-02-09 14:01:48

+0

@RafałDowgird - 这是改写问题的好方法,“可以用什么相似性度量来对这些序列进行分类?”看起来3组中的高峰和低谷排列不同 - 因此这些位置可能是相似性指标。但我有一种感觉,可能有更好的方法(因此是问题)。 – atomh33ls 2015-02-09 14:14:01

回答

1

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

  • 线性序列正常化,使他们既平均值和方差一致,即两个[1,0,1,0]和[5,-5,5,-5]归一化为[1,-1,1,-1]。

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

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

1

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

  1. 如同一个组内成员主要由一些比例不同,所以首先做一些“正常化”的,正如Rafal所建议的那样。

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

相关问题