Я собираюсь написать небольшое приложение для распознавания жестов (пока с помощью мыши).
теперь запишите координату мыши в массиве numpy объекта Point (простой класс с атрибутами x и y). для обучения моей системы (на основе HMM) мне нужен (я думаю ...) некоторый образец той же длины, нормализованный между тем же диапазоном.
Скажем, например, что мне нужен массив длиной 8 элементов для моего обучения и для моего классификатора. И я только что записал a1 (элемент с 5 линзами) и a2 (элемент с 9 линзами). Как получить len (a1) == len (a2) == 8?
ИЗМЕНИТЬ: я нашел веб-сайт, на котором объясняется моя проблема: http://www.creativedistraction.com/demos/gesture-recognition-kinect-with-hidden-markov-models-hmms/ он использует k-средства для уменьшения элемента в 8 кластер ..
РЕШЕНИЕ: у меня есть несколько разрозненных точек (я не знаю, сколько), и я хочу уменьшить их до 8 значений. один из методов, который я могу использовать, - это их кластеризация с помощью некоторых кластерных алгоритмов. KMeans может быть одной из возможностей. в scipy с этим кодом: from scipy.cluster.vq import kmeans2
def clusterize(numpy_array, n_cluster):
centroids, labels = kmeans2(numpy_array, n_cluster)
#print centroids, labels
return centroids
Примечание: если размер numpy_array меньше, чем n_cluster, я заметил, что решения не очень хороши, но в моем реальном случае после некоторых испытаний я заметил, что у меня больше, чем (размер numpy_array> = 60, n_cluster = 8). это вполне логично: k-means - это не детерминированный алгоритм, но это итеративный процесс, включающий некоторую случайную инициализацию, потому что для такого рода проблем не существует аналитического хорошего решения (если я хорошо понял).
наверняка есть некоторые математические открытия, в которые я не хочу углубляться. это делает работу.