Я работаю над реализацией алгоритма kmeans в python. Я тестирую новые способы инициализации своих центроидов и хотел реализовать их и посмотреть, как это повлияет на кластер.
Моя идея состоит в том, чтобы выбрать точки данных из моего набора данных таким образом, чтобы центроиды были инициализированы краевыми точками моих данных.
Пример простого примера 2 атрибута:
Допустим, это мой входной массив
input = array([[3,3], [1,1], [-1,-1], [3,-3], [-1,1], [-3,3], [1,-1], [-3,-3]])
Из этого массива я хотел бы выбрать точки ребер, которые будут [3,3] [-3,-3] [-3,3] [3,-3]. Итак, если мой k равен 4, эти точки будут выбраны
В данных, с которыми я работаю, есть 4 и 9 атрибутов и около 300 точек данных в моем наборе данных.
примечание: я не нашел решения, когда k ‹> краевых точек, но если k > краевых точек, я думаю, что я бы выбрал эти 4 точки, а затем попытался разместить остальные вокруг центральной точки графика.
Я также подумал о том, чтобы найти максимум и минимум для каждого столбца и оттуда попытаться найти края моего набора данных, но у меня нет представления об эффективном способе определения краев из этих значений.
Если вы считаете, что эта идея не сработает, я хотел бы услышать, что вы хотите сказать.
Вопросы
- Есть ли у numpy такая функция для получения индексов точек данных на краю моего набора данных?
- Если нет, то как мне найти эти краевые точки в моем наборе данных?