В одномерных данных не используйте кластерный анализ.
Кластерный анализ обычно является многомерной техникой. Или позвольте мне лучше сформулировать это по-другому: для одномерных данных, которые полностью упорядочены, существуют гораздо лучшие методы. Использование k-средних и подобных методов в данном случае - пустая трата, если только вы не приложите достаточно усилий, чтобы реально оптимизировать их для 1-го случая.
Просто чтобы дать вам пример: для k-средних обычно используют k случайных объектов в качестве начальных начальных чисел. Для одномерных данных довольно легко добиться большего успеха, просто используя соответствующие квантили (1 / 2k, 3 / 2k, 5 / 2k и т. Д.), После сортировки данных один раз и последующей оптимизации с этой начальной точки. Однако 2D данные не могут быть отсортированы полностью. И в сетке, скорее всего, будут пустые ячейки.
Я бы тоже не назвал это кластером. Я бы назвал это интервалом . Что вы действительно хотите сделать, это оптимизировать границы интервала. Если вы выполните k-means, он проверит для каждого объекта, будет ли он перемещен в другой кластер. Это не имеет смысла в 1D: нужно проверять только объекты на границах интервала. Это, очевидно, намного быстрее, так как там всего ~ 2 тыс. Объектов. Если они уже не предпочитают другие интервалы, больше центральных объектов тоже не будет.
Возможно, вы захотите изучить такие методы, как , например, оптимизация Jenks Natural Breaks .
Или вы можете сделать оценку плотности ядра и искать локальные минимумы плотности, чтобы разделить их там. Приятно то, что вам не нужно указывать k для этого!
PS пожалуйста используйте функцию поиска. Вот некоторые вопросы по 1-й кластеризации данных, которые вы пропустили: