Как я могу выполнить кластерный анализ при проверке антикорреляции, а также корреляции? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть данные, представляющие собой матрицу z-показателей. Каждый ряд имеет нулевое среднее. Я пытаюсь выполнить анализ кластера kmeans, чтобы назначить каждую строку для кластера. Чтобы взять очень упрощенный пример, в матрице:

[0, -1, 1, 0]
[0, -1, 1, 0]
[0, 1, -1, 0]
[1, 1, -1, -1]
[-1, -1, 1, 1]

(за исключением того, что фактические данные z-показателя будут иметь дисперсию 1 в каждой строке.)

Python должен понимать, что две верхние строки находятся в одном кластере. Я могу сделать это с помощью sklearn.cluster.KMeans. Однако теперь я хочу, чтобы он обнаружил «антикорреляцию» и классифицировал третий ряд вместе с двумя верхними рядами, потому что это просто отрицательный из них. Если я скажу ему найти два кластера, он должен найти один с тремя верхними рядами и другой с двумя нижними, потому что два нижних также являются отрицательными по отношению друг к другу.

Один из возможных подходов (возможно) - если бы я мог использовать пользовательскую функцию соответствия, которая определяет расстояние двух точек r1 и r2 как минимум sqrt ((r1 + r2) ** 2) и sqrt ((r1-r2) ** 2). Возможно, я бы хотел узнать, использовалась ли данная строка в качестве ее положительной или отрицательной версии в кластере.

Спасибо за любую помощь, которую вы можете оказать.

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