6

Я сделал Kmeans кластеризацию и выяснили центры кластеров с использованием OpenCV C++ API.Махаланобиса расстояние в Kmeans Кластеризация с помощью OpenCV

kmeans(data_points, clusterCount, labels, TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0), 3, KMEANS_PP_CENTERS, cluster_centers); 

Тогда я использую евклидово расстояние к найти ближайший кластер для новой точки данных против всех центров кластеров.

int distance = find_EucledianDist(new_datapoint, cluster_centers); 

Как бы использовать Махаланобиса Расстояние вместо евклидово расстояние? Я знаю, что мне нужно вычислить матрицу ковариации и инвертировать ее и найти расстояние Махаланобиса.

Однако я не знаю, как я это делаю и в чем ЗАКАЗ (найти матрицу кова, перевернутую матрицу, из которой данные/матрица)?

ответ

3
+0

он делает именно то, что вы хотите, и дает соответствующую opencv-функцию для каждого шага :). – jlengrand

+0

И просто используйте функцию opencv Mahalanobis (я отредактировал ваш ответ) –

+0

еще лучше: ^^ – jlengrand

Смежные вопросы