Создание похожих кластеров / групп людей на основе как качественной, так и количественной информации. - PullRequest
0 голосов
/ 20 мая 2019

У меня есть массив людей со следующими полями (JSON). Допустим, у меня 1000 таких людей. Я хочу создать две похожие (в совокупности), но случайно сгенерированные группы по 200 в каждой. У них должны быть похожие мужчины и женщины; такое же количество людей определенных возрастных групп, и такое же общее количество яблок и такое же общее количество апельсинов.

{
    "id": 1,
    "gender": "M",
    "age": "25 - 34",
    "apples": 20,
    "oranges": 14
}

Я думал о том, чтобы перетасовать мой массив людей, а затем взять случайного человека из массива и добавить его в первую группу. Предполагая, что случайный человек, которого я взял из массива, - это человек выше, я бы затем попытался найти случайного 25-34-летнего мужчину и выбрать человека с наименьшим средним квадратом разницы яблок + апельсинов. Если нет человека, который соответствует этому, я бы ослабил условия и взял бы женщину той же возрастной группы ... и расслабил бы условия, пока я просто не выбрал случайного человека из исходного массива, если я не мог найти соответствие .

Есть ли лучший способ сделать это?

...