【问题标题】:Application of clustering in segmentation and reduction聚类在分割和归约中的应用
【发布时间】:2013-11-01 02:59:57
【问题描述】:

我有一个多维时间序列数据,它们是动作识别的特征。我有 20 个变量代表 3D 关节位置、四元数值、平均值、关节之间的欧几里得距离。我已经应用了 k=4 的 kmeans 聚类。聚类后​​,我想将同时出现的集群 id 组合在一起,以便与它们对应的数据点也被该集群 id 组合在一起。例如,考虑以下 10 个数据样本的聚类索引,

IDX = [1 1 2 1 3 3 3 2 2 4]'

让数据如下,其中 A,B,C,D,E,F,G,H 是 3 个特征变量,其中 (A-C) 表示特定关节的 (x,y,z) 坐标,D表示关节相对于头部的欧式距离,(E-H)是关节的四元数值。让数值为元素。 Data =

A   B   C   D    E   F    G   H
a1  b1  c1  d1   e1  f1   g1  h1
a2  b2  c2  d2   e2  f2   g2  h2
a3  b3  c3  d3   e3  f3   g3  h3
a4  b4  c4  d4   e4  f4   g4  h4
a5  b5  c5  d5   e5  f5   g5  h5
a6  b6  c6  d6   e6  f6   g6  h6
a7  b7  c7  d7   e7  f7   g7  h7
a8  b8  c8  d8   e8  f8   g8  h8
a9  b9  c9  d9   e9  f9   g9  h9
a10 b10 c10 d10  e10 f10  g10 h10

然后,结果将是一个缩减向量(数据的压缩版本),其中前 2 行数据将由集群 id 1 表示,第 3 行数据由集群 id 2 表示,第 4 行 = 1,第五,第 6 行和第 7 行将合并,第 3、8 和 9 行用 2 表示,最后一行用 4 表示。因此,最终的数据表示成为一个压缩字符串,其维度和长度也减少了:Compressed_Data = [1 2 1 3 2 4]'。如何进行此映射和转换?提前谢谢你。

【问题讨论】:

  • 不清楚你在做什么。您是否尝试过针对该问题进行任何编码,您能否举例说明如何从输入中获取输出?输出的倒数第二行不应该是 2 而不是 1?
  • 没关系。我想知道输出是否是 Compressed_Data 中的错误
  • 我问的是倒数第二个元素 (Compressed_Data(end-1))。为什么是 1?

标签: matlab compression cluster-analysis dimensionality-reduction


【解决方案1】:

要压缩索引数组IDX,您可以尝试以下操作:

a = IDX; % for clarity, use a different variable, a
a(find(diff(IDX)==0)+1) = []; % remove repeating elements
Compressed_Data = a;

或者,

Compressed_Data = IDX([1; find(diff(IDX(:))~=0)+1])

如果这不是您要找的,请告诉我。

【讨论】:

  • @SrishtiM - 第一行代码只是一个起点,而不是结果。尝试运行 两行 行代码。当您说“我将 IDX 的前 2 行合并并表示为 1 行并用符号 1 表示时。这反过来将使我的原始数据的前 2 行由符号 1 表示”,这解释了您如何获得 @987654324 @来自IDX(1:2)。这就是我发布的代码所做的。尝试运行第二个替代解决方案。它还采用 IDX 中的任何同时出现的符号并压缩它们。另外,请帮助我了解您是如何得到Compressed_Data(end-1) 等于1 的。
  • 太棒了!我将不胜感激,因为您发现它很有帮助,并且我坚持了下来。 ;) 您提到的find 操作通过比较相邻值是否相等来给出重复值的索引。我建议对这两个选项进行计时,看看哪个是最快的,但我猜是第二个。我没有链接,抱歉。
猜你喜欢
  • 2012-09-17
  • 1970-01-01
  • 2021-02-12
  • 2011-10-11
  • 2012-02-04
  • 2018-10-05
  • 2021-08-03
  • 2018-01-12
  • 2015-08-28
相关资源
最近更新 更多