Подтвердить что ты не робот

Кластеризация кластеров 1D

Возможный дубликат:
Оптимизация кластерных одномерных данных?

Итак, скажем, у меня есть такой массив:

[1,1,2,3,10,11,13,67,71]

Есть ли удобный способ разбиения массива на нечто подобное?

[[1,1,2,3],[10,11,13],[67,71]]

Я просмотрел похожие вопросы, но большинство людей предложило использовать k-средства для кластеров, например scipy, что довольно запутывает использование для новичка, подобного мне. Также я думаю, что k-средство более подходит для двух или более размерных кластеров? Есть ли способ разбивать массив из N чисел на многие разделы/кластеры в зависимости от чисел?

Некоторые люди также предлагают жесткое разбиение диапазонов, но это не всегда дает результаты как  Ожидается,

4b9b3361

Ответ 1

Не используйте многомерные алгоритмы кластеризации для одномерной задачи. Единственное измерение гораздо более особенное, чем вы наивно думаете, потому что вы можете его сортировать, что значительно облегчает работу.

На самом деле его обычно называют не кластеризацией, но, например, сегментации или оптимизации естественных разрывов.

Вы можете посмотреть Jenks Natural Breaks Optimization и аналогичные статистические методы. Оценка плотности ядра - это также хороший метод для поиска с сильным статистическим фоном. Местные минимумы плотности - хорошие места для разделения данных на кластеры, со статистическими соображениями для этого. KDE - это, пожалуй, самый надежный метод кластеризации одномерных данных.

С KDE снова становится очевидным, что одномерные данные намного лучше себя ведут. В 1D у вас есть локальные минимумы; но в 2D вы можете иметь точки седла и такие "возможно" точки расщепления. См. Википедия иллюстрация седловой точки, так как такая точка может быть или не быть подходящей для разделения кластеров.

Ответ 2

Вы можете искать алгоритмы дискретизации. 1D проблема дискретизации очень похожа на то, что вы просите. Они решают точки отсечения, в зависимости от частоты, стратегии бинирования и т.д.

weka использует следующие алгоритмы в своем процессе дискретизации.

weka.filters.supervised.attribute.Discretize

использует метод Fayyad и Irani MDL или критерий MDON Kononeko

weka.filters.unsupervised.attribute.Discretize

использует простой binning