我应该使用哪种类型的分类系统?

时间:2012-02-14 11:39:54

标签: hidden-markov-models

我需要在加速度计上训练运动模式数据的分类器。对于每次样本,我存储了X Y和Z坐标。因此,在我的数据集中表示单个移动,如下所示:

[0.39028051 -0.5483283  10.385374]; [0.17420317 -0.2802931  10.72625]; [0.28956637  -0.13387422 11.9645]; [0.6281768    -0.14725612 13.369692]; [0.72674876 -0.115191355    14.50422]; [0.7450281   -0.079684645    15.090715]; [0.74526054 -0.44727635 15.027773]; [0.6936915  -0.9639046  14.088198]; [0.5290651  -1.1378883  12.5164585]; [0.23881127    -1.346372   10.889902]; [0.052466527    -1.2700776  9.227933]; [0.019615699 -0.8237766  7.65959]; [0.10373996   -0.29147366 6.416745]; [0.17365126  0.09419979  5.420801]; [0.18465124  0.3646446   4.5289593]; [0.22039331 0.52677184  3.8076568]; [0.33365434 0.48184758  3.4170833]; [0.40346703 0.21976978  3.472282]; 

其中[]之间的值表示XYZ组件。

起初我认为隐马尔可夫模型最适合我的问题。但我在定义数据中的状态时遇到了麻烦。我发现的所有例子都有明确定义的有限状态集(即下雨,晴天或阴天)。我的数据集中的所有值都介于-11和+11之间,但它们显然不是整数。不过,我可以用它作为国家吗?从而给我11 * 11 * 11 = 1331个州?我将如何计算转换矩阵?

此外,观察次数在运动之间不同(虽然属于同一级别)。

对不起,我这个问题太宽泛,指向HMM教程的指针也有很多帮助!

谢谢

1 个答案:

答案 0 :(得分:0)

在伪代码中,计算两点之间的所有距离:

for index=0 to coords.length() step 2 
{
   x1=coord[i].x
   y1=coord[i].y
   z1=coord[i].z

   x2=coord[i+1].x
   y2=coord[i+1].y
   z2=coord[i+1].z

   deltaX = x2-x1
   deltaY = y2-y1
   deltaZ = z2-z1
   distance[i] = SquareRoot(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)
}

然后你可以计算distance值的高斯分布,以及均值,中位数,方差......一个算法不应该太复杂,即使它可能需要一些调整到处都是。

或者,在循环中,您可以轻松计算当前距离和之前距离之间的差异:

previousDistance = distance
distance = SquareRoot(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)
diff = distance - previousDistance

然后在diff上应用high pass filter