Можливі дублікати:
Кластеризація масивів 1D
У мене є масив чисел, як [1, 20, 300, 45, 5, 60, 10, 270, 3]
. Що таке ефективний алгоритм групування цих чисел разом на основі близькості? У цьому випадку я очікую щось подібне [1, 3, 5]
, [20, 45, 60]
і [270, 300]
.
Відповіді:
2 для відповіді № 1Найважча частина того, що ви задаєте, - це визначення фактичної близькості. Що б ви очікували від вихідного [5,10,15,20]
? Це буде точно так само, як і для групи [500,1000,1500,2000]
?
А як на рахунок [1,2,3,5,7,8,9]
? Чи повинна бути одна група або три? (або два?).
А як на рахунок [1,2,3,5,7,8,9,1075,4000]
? Чи 1075 і 4000 згруповані разом? Чи зменшуються групування менших чисел у більшій кількості у зразку?
Це питання є щось задане цілим полем машинного навчання: Кластерний аналіз Можливо це пов'язане питання допоможе?
Я думаю, що ти хочеш K-засоби кластеризації (з належним чином пов'язаним з відповідним питанням), але ви повинні знати, скільки груп ви хочете розділити ваші дані, щоб використовувати його.
2 для відповіді № 2
Це може бути величезним перебільшенням, але ви можете розглянути це ієрархічні алгоритми кластеризації. Ці алгоритми об'єднують значення в aІєрархія, з якої можна легко витягнути найкращі кластери k. Агломераційні кластери - це, мабуть, найпростіший з цих підходів для реалізації, і з досвіду він має тенденцію створювати дуже хороші кластери.
Сподіваюся, це допомагає!