В одновимірних даних не використовуйте кластерний аналіз.
Кластерний аналіз зазвичай є багатоваріантною методикою. Або дозвольте краще сказати навпаки: для одновимірних даних - які повністю упорядковані - є набагато кращі методи. Використання k-засобів та подібних методів тут є загальним відходом, якщо ви не докладете достатньо зусиль, щоб фактично оптимізувати їх для 1-денного випадку.
Просто для прикладу: для k-значить звичайно використовувати k випадкові об'єкти як початкові насіння. Для одновимірних даних зробити це досить просто, просто використовуючи відповідні квантили (1 / 2k, 3 / 2k, 5 / 2k тощо), після сортування даних один раз , а потім оптимізацію з цієї вихідної точки. Однак 2D дані не можуть бути відсортовані повністю. І в сітці, ймовірно, будуть порожні комірки.
Я також не назвав би це кластером. Я б назвав це інтервалом . Що ви дійсно хочете зробити, це оптимізувати межі інтервалу. Якщо ви робите k-означає, він перевірятиме для кожного об'єкта, чи слід його перенести на інший кластер. Це не має сенсу в 1D: потрібно перевіряти лише об'єкти на інтервальних межах. Це, очевидно, набагато швидше, оскільки там є лише ~ 2k об'єктів. Якщо вони вже не віддають перевагу іншим інтервалам, більше центральних об'єктів також не буде.
Ви можете розглянути такі методи, як , наприклад, оптимізація природних розривів Jenks , наприклад.
Або ви можете зробити оцінку щільності ядра і шукати локальні мінімуми щільності, щоб там розділитись. Приємно, що для цього вам не потрібно вказувати k!
PS, будь ласка, використовуйте функцію пошуку. Ось кілька питань щодо одночасного кластеризації даних, які ви пропустили: