Как просто кластеризовать значения одномерного массива?

Пусть есть примерно такой массив:
array(
	1000 => 12,
	1010 => 20,
	1085 => 34,
	1100 => 40,
	1200 => 35,
	1350 => 20,
	1510 => 20,
	2000 => 22,
	2100 => 24,
	2350 => 40,
	3500 => 14,
	4500 => 20,
	6000 => 25
)

Нужно его разбить на вменяемые группы интервалов ключей. Как?
Для понимания:
Это цены товаров (ключи) и количество товаров по данной цене (значения). Нужны интервалы для фильтра. С произвольным примерным шагом. Набор данных не реальный конечно, а для примера.
Проблема в том что допустим если у нас шаг 500р. то первый интервал будет 1000-1500 и из него выпадут близкие товары по 1510р. Зато они попадут в интервал 1500-2000, а вот товары по 2010 откачуют в интрвал 2000-2500.
Бил бы человек, он бы сделал интервалы 1000-1510, 2000-2010 или 2000-2550 и т.д.
Как это сделать автоматически?
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 2
@heartdevil
плыву как воздушный шарик
Привет.

Я не очень понял, чем вас не устраивает описанное вами?

И что вы в итоге хотите?

Если у вас шаг 500 рублей, и начинаете вы с 1000, то у вас будут именно интервалы с шагом 500. Все, что не попало в интервалы, попадет в следующие интервалы.
Получается, вы установили шаг, а ждете, совсем другой интервал.
Ответ написан
@AlikDex
ко 2-му значению интервала добавить % от него. Например 3-5%. Тогда сумма 2050 из интервала 1500-2000 попадет в него.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы