【发布时间】:2021-11-21 23:42:34
【问题描述】:
我正在寻找一种算法,可以帮助我将人们分成 3 组(a、b、c)。一个群体中的人应该适合在一起,这意味着食物偏好应该以一种他们都同意同一种食物的方式相匹配。组内每个集群(子组)由 6 人组成。 假设有 4 种食物偏好:
- 人喜欢吃肉
- 人喜欢吃素
- 这个人喜欢吃素食
- 这个人没有食物偏好,这意味着这个人基本上什么都喜欢吃
我想将人们分成 3 个逻辑组:
- a 组:肉类和 no_food_preference
- b 组:素食主义者、素食主义者和 no_food_preference
- c 组:素食和 no_food_preference
我使用 no_food_preference 的人来填充集群,以确保每个集群包含 6 人。
将所有人分组后,每组将由 6 人的倍数组成。
我的问题:我非常努力,但我找不到可以为我做这件事的算法。我发现很难处理这样一个事实,即算法应该处理任意数量的参与者。
示例:
import pandas as pd
df = pd.DataFrame(
{
"user_id": [i for i in range(1, 55)],
"Master_FoodPreference": ["meat", "vegetarian", "meat", "vegan", "meat", "vegetarian", "meat", "vegetarian", "no_food_preference",
"meat",'no_food_preference', 'vegetarian',"meat", "meat",
"vegetarian", "vegetarian", "vegan", "vegetarian", "vegetarian", "no_food_preference", "vegan",
"vegetarian", "vegetarian", "vegetarian", "vegetarian", "vegetarian", "vegetarian",
"meat", "vegetarian", "meat", "vegetarian", "no_food_preference", "vegetarian", "vegetarian", "vegetarian",
"vegetarian", "vegetarian", "vegetarian", "vegetarian", "vegetarian", "no_food_preference",
"no_food_preference", "no_food_preference", "meat", "no_food_preference", "meat", "meat",
"vegan", "no_food_preference", "no_food_preference", "vegan" ,"no_food_preference" ,"vegan" ,"vegan" ]
}
)
df.head()
>>>>
user_id Master_FoodPreference
0 1 meat
1 2 vegetarian
2 3 meat
3 4 vegan
4 5 meat
您如何将这些人分为group_a、group_b 和group_c?
编辑 - 组构成: 每个组 (a,b,c) 将获得一个特定的标签:
- a 组:人们会用肉做饭
- b 组:人们会做一顿纯素的饭菜
- c 组:人们会做一顿素食餐
这意味着,我们应该尝试让大多数素食者加入group_c。如果group_c 完整,我们将它们放入group_b。注意:我们不能将纯素食者放入group_c,因为纯素食者不吃素食。
【问题讨论】:
-
我知道这不是典型的 stackoverflow 问题,因为问题不是很具体。也许你知道我可以在哪里获得帮助解决我的问题的任何其他论坛?!
-
你的最后一句话对素食者不是很清楚。优先考虑适合 B 组还是 C 组?
-
非常抱歉给您带来的困惑!!!我再次编辑了我的笔记。我希望现在它对你有意义?!
标签: python pandas dataframe cluster-analysis