Создание кластерного центроида, подверженного шуму - PullRequest
1 голос
/ 21 июня 2011

Я работаю над алгоритмом кластеризации для группировки аналогичных диапазонов действительных чисел. После того как я сгруппирую их, мне нужно создать один диапазон для этого кластера, то есть кластерный центроид. Например, если один кластер содержит значения <1,6>, <0,7> и <0,6>, это означает, что этот кластер предназначен для всех кластеров со значениями <0,7>. Вопрос в том, как создать такой результирующий диапазон. Я думал взять минимальное и максимальное значение всех значений в кластере, но это будет означать, что алгоритм очень чувствителен к шуму. Я должен сделать это как-то взвешенно, но я не уверен, как. Есть намеки? Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2011

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

midpoints = []
for range in ranges
    midpoints[range] = range.min + (range.max - range.min) / 2
end

После завершения алгоритма вы можете сделать, как вы предлагали ранее, и взять минимальное и максимальное значения всех диапазонов в кластере, чтобы создать диапазон для этого центроида.

...