Какой тип системы классификации я должен использовать? - PullRequest
0 голосов
/ 14 февраля 2012

Мне нужно обучить классификатор по данным движения с акселерометра. Для каждого временного образца я сохранял координаты 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 голосов
/ 14 февраля 2012

в псевдокоде, вычислите все расстояния между двумя точками:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...