2015-03-19 5 views
1

Я работаю с алгоритмом кластеризации среднего сдвига, который основан на оценке плотности ядра набора данных. Я хотел бы создать большой массив с высоким размерным размером, и я подумал, что функция Scikit-Learn make_blobs подходит. Но когда я пытаюсь создать 1-миллионный 8-мерный набор данных, я получаю почти каждую точку, рассматриваемую как отдельный кластер.Создание высокоразмерных наборов данных с помощью Scikit-Learn

Я генерирую капли со стандартным отклонением 1, а затем устанавливая полосу пропускания для среднего сдвига на одно и то же значение (я думаю, это имеет смысл, верно?). Для двухмерных наборов данных это дает прекрасные результаты, но для более высоких измерений я думаю, что я сталкиваюсь с проклятием размерности, поскольку расстояние между точками становится слишком большим для значимой кластеризации.

Есть ли у кого какие-либо советы/подсказки о том, как получить хороший высокоразмерный набор данных, подходящий для (что-то типа) Сдвиг по смену кластеров? (Или я делаю что-то неправильно? (Что, конечно, хорошая возможность))

ответ

1

Стандартное отклонение кластеров не 1.

У вас есть 8 размеров, каждый из которых имеет STDDEV из 1 , поэтому у вас есть общее стандартное отклонение sqrt (8) или что-то в этом роде.

Оценка плотности ядра не работает в высокоразмерных данных из-за проблем с пропускной способностью.

+0

Да, я подумал, что это что-то вроде этого. Но особенно потому, что я знаю стандартное отклонение, я думал, что это будет нормально, так как оценка полосы пропускания. Итак, как бы вы вычислили общее стандартное отклонение? Я не совсем понимаю, как вы получаете sqrt (8) – danielvdende

+0

Длина из них (8). –

+0

Но из-за проклятия размерности он все еще может не работать. Я где-то читал, что KDE имеет тенденцию разбиваться уже на 6 измерений или около того. –