Учитывая следующие три последовательности чисел, я хотел бы выяснить, как группировать числа, чтобы найти самые близкие отношения между ними.Группировка чисел на основе вхождений?
1,2,3,4
4,3,5
2,1,3
...
Я не уверен, что алгоритм (ы) Я ищу званых, но мы можем увидеть более сильные отношения с некоторыми из чисел, чем с другими.
Эти цифры появляются вместе дважды:
1 & 2
1 & 3
2 & 3
3 & 4
Вместе раз:
1 & 4
2 & 4
3 & 5
4 & 5
Так, например, мы можем видеть, что должно быть отношения между 1, 2, & 3
, так как все они появляются вместе, по крайней мере в два раза. Вы также можете сказать, что 3 & 4
тесно связаны, так как они также появляются дважды. Однако алгоритм может выбрать [1,2,3]
(более [3,4]
), так как это более крупная группировка (более включено).
Мы можем сформировать любой из следующих групп, если мы будем придерживаться число наиболее часто используемых вместе в группе:
[1,2,3] & [4,5]
[1,2] & [3,4] & [5]
[1,2] & [3,4,5]
[1,2] & [3,4] & [5]
Если дубликаты будут разрешены, вы могли бы даже в конечном итоге со следующими группами:
[1,2,3,4] [1,2,3] [3,4] [5]
Я не могу сказать, какая группировка наиболее «правильная», но все четыре из этих комбо все находят разные способы полуправильной группировки чисел. Я не ищу определенную группу - просто общий алгоритм кластера, который работает достаточно хорошо и легко понять.
Уверен, что есть много других способов использовать число встречаемости, чтобы сгруппировать их. Каким будет хороший алгоритм группировки баз данных? Предпочтительны образцы в Go, Javascript или PHP.
Я вижу два голоса, чтобы закрыть этот вопрос, потому что он слишком широк. Могу ли я спросить, что является широким в этом вопросе? Я не уверен, как упростить эту задачу. – Xeoncross
Это называется корреляционной кластеризацией. Создайте граф с числами 1 .. 5 как узлы, поместите ребра по количеству раз, когда пара появляется вместе. Я уверен, что есть алгоритмы, но это не такая аккуратная и четко определенная проблема. –
Означает ли порядок элементов? –