Я использую обычный алгоритм kmeans Matlab с «Расстоянием», «Косинусом», «EmptyAction», «Drop» на матрице функций, нормализованной L2, и у меня есть проблема. Результат, который генерирует Matlab, просто назначает КАЖДУЮ точку данных кластеру 1.00000
, даже если k = 20, а все центроиды в C равны NaN
. У кого-нибудь есть предложения относительно того, что может быть причиной этого?
Макет матрицы ([0,1,...,1,0,1],[...],[0,1,...,1,0,1]). Я выполнил нормализацию L2, используя numpy.linalg.norm
Python, прежде чем передать файл в Matlab. Именно так я запускаю kmeans:
m=importdata('matrix.txt');
data=m'; % transpose, because kmeans treats columns as features instead of rows
[L, C]=kmeans(data, 20, 'Distance', 'cosine', 'EmptyAction', 'drop')
Вот пример моего нормализованного набора данных:
10.3440804328
12.6885775404
15.5884572681
15.9059737206
17.4355957742
17.0
17.3493515729
17.3205080757
18.6279360102
19.7230829233
21.400934559
22.0
22.5831795813
23.0
24.0416305603
25.2388589282
26.8141753556
22.5388553392
9.2736184955
13.5277492585
15.2970585408
Будем признательны за любую помощь или предложения. Если вам нужна дополнительная информация, дайте мне знать!