Ошибка в расчете Centroid Kmeans в Matlab - PullRequest
0 голосов
/ 09 января 2012

Я получил странный вывод kMeans, реализованный в matlab.Все мои записи в моей входной матрице F измерения dxn находятся между 0 и 1. Когда я запускаю алгоритм kmeans, используя следующую команду matlab, которая создает 50 кластеров.

[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton')

Здесь IDXвозвращаемая метка, а B - центр кластераПоскольку все ваши точки данных находятся в [0,1] ^ d, вы ожидаете, что вычисленный центроид также находится в [0,1] ^ d, где d - это размерность точки.

Однако результирующийCentroid, который я получил от kmeans после нескольких различных инициализаций, содержит отрицательное значение.

Может кто-нибудь сообщить мне причину этого?

1 Ответ

1 голос
/ 09 января 2012

Я не могу действительно ответить на ваш вопрос без фактической матрицы данных "F". Однако отмечу, что если size (F) == [d, n], то код

[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton')

будет рассматривать F как набор из d точек, каждая из n-переменных. Таким образом, все d точек принадлежат [0,1] ^ n.

Также

  1. Вам действительно нужны необязательные аргументы? Что произойдет, если вы удалите их?
  2. Что произойдет, если вы уменьшите количество точек данных во входной матрице F?
  3. что произойдет, если вы уменьшите количество кластеров, скажем, 10 вместо 50?
...