@Ooos
Front-End

Как логически разбить цены на 5 диапазонов, если цены больше 5?

Всем доброго дня! Не могу решить задачку.

Есть отсортированный список цен, его необходимо разбить на 5 диапазонов (от 600 до ..., от ... до и тд)

prices = [600, 1000, 4500, 5000, 6500, 7000, 7500, 10000]
amount = 5
legend = *диапазон из 5 цен*

P.S
Использовал два варианта. Один из них это если поделить количество цен на amount тем самым определим шаг для диапазона. Но вариант не подошел, не всегда может правильно группировать.
  • Вопрос задан
  • 397 просмотров
Пригласить эксперта
Ответы на вопрос 5
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Но вариант не подошел, не всегда может правильно группировать.


Так и хочется ответить "42".

Судя по постановке вопроса вы и сами не знаете "как правильно" группировать. Для начала определитесь для себя, как выглядит "правильно отсортированный результат". для начала в частных случаях, потом в общем виде (алгоритмически).
Ответ написан
Комментировать
EreminD
@EreminD
Кое-что умею
а что значит "правильно" группировать?
пока, из исходных данных, просится просто брать максимальную цену (10000), делить ее на количество диапазонов (amount) - получаем шаг

В данном примере, получим 10000/5 = 2000
[0, 2000], [2001, 4000], [4001, 6000], [6001, 8000], [8001, 10000]
Теперь, как вам надо, по спискам распихивайте ил массивам:
1. 600, 1000,
2.
3. 4500, 5000,
4. 6500, 7000, 7500,
5. 10000
Ответ написан
profesor08
@profesor08
Разбей логарифмически. Тем самым получишь то что ты хочешь. Постепенное возрастание диапазона.
Ответ написан
Комментировать
@rustler2000
погромист сикраш
Но вариант не подошел, не всегда может правильно группировать


Назвал все буквы - не смог прочитать слово :D
Ответ написан
Комментировать
Алгоритмы кластеризации, например, KMeans, решают подобные задачи.

# lang: Python 3.5
import numpy as np
from sklearn.cluster import KMeans

cl = KMeans(n_clusters=5)
labels = cl.fit_predict(np.array([[600], [1000], [4500], [5000], [6500], [7000], [7500], [10000]))
#=> [0 0 3 3 1 1 4 2]

Отсортировать кластеры по возрастанию уже не составляет труда.
Предлагаю вам самому найти реализацию KMeans для вашего языка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы