【发布时间】:2019-10-22 13:37:33
【问题描述】:
我有一个桶问题,我想用 Python 解决,并且好奇是否有人对最佳方法(或现有包)有想法。我有一个人群,我想为其创建 10 个垃圾箱。人口有一个分数,并被分成5组。
我的目标是根据分数创建分箱,以便 5 组中的每一个的分布尽可能细化和平滑。例如。 A 组人口的每个箱的最大分布 箱 3 的差异必须具有
我对粒度优化的想法是最小化残差。例如。为每个组创建一个均匀分布(即每组 10%),并尝试一系列不同的削减,以最小化 (Actual Bucket% - 10%) 的总和,并设置上面的约束。但真的不知道如何开始。
这是数据集的一个示例。
# intialise data of lists.
data = {'ID':['1111', '1112', '1113', '1114',....],
'Group':[A, A, B, B,....],
'Score':[0.02123,0.03243,0.43543,0.12213,...]}
【问题讨论】:
-
“分数”在“组”中的分布是否大致相同?例如
data.groupby('Group')['Score'].describe()说什么 -
没有。 A 组的得分偏低,B 组的得分偏高,C-E 组的分布更正态。
-
只是为了确认:您正在尝试选择一组值来指定直方图箱之间的中断,这些值应该进行优化,以便每个组的直方图(使用这个共享的中断集)尽可能统一。如果是这样,我不确定你能做多少。我会尝试在答案中解释,但认为stats.stackexchange.com 可能是一个更好的论坛
-
是的,没错。谢谢山姆!
标签: python optimization bucket bins