gpt4 book ai didi

python - 如何在Python中通过数据集中的加权概率获得均匀分布?

转载 作者:行者123 更新时间:2023-11-28 21:31:24 25 4
gpt4 key购买 nike

我已经看过this question我知道 numpy.random.choice,但我的问题略有不同。

鉴于此,我有一个数据集如下:

dict ={"Number of polyps":[10,8,3,1,2,6,13],
"Right ":[3,2,3,1,0,3,3],
"Left":[2,2,4,15,6,7,1] }

dt = pd.DataFrame(dict)

所以,它是:

Number of polyps  Right   Left
10 3 2
8 2 2
3 3 4
1 1 15
2 0 6
6 3 7
13 3 1

我需要按照以下要求重新填写RightLeft

  1. 之和等于息肉数量
  2. RightLeft 的值来自其当前值的加权概率

例如,对于如下给定行:

Number of polyps  Right   Left
10 3 2

因此,对于这一行,它可能如下所示。这里 0.6= 3/(3+2)0.4= 2/(3+2):

nr = np.random.choice(["Right","Left"],size=10, replace=True,p=[0.6,0.4])
rightCount = list.count('Right')
leftCount = list.count('Left')
print(rightCount)
print(leftCount)

更新此行后将是:

Number of polyps  Right   Left
10 3 7

问题是,我必须对数据集中的所有行执行此操作,但我不知道该怎么做!

最佳答案

您基本上是从 binomial distribution 中提取的。它在 NumPy 中实现为 numpy.random.binomial :

>>> dt["Right"] = np.random.binomial(dt["Number of polyps"], dt["Right"]/(dt["Right"]+dt["Left"]))
>>> dt["Left"] = dt["Number of polyps"] - dt["Right"]

在这里,我们对每一行执行 dt["Number of Polyps"] 二元选择试验,每次试验以 dt["概率选择 Right右"]/(dt["右"]+dt["左"]) 否则。

关于python - 如何在Python中通过数据集中的加权概率获得均匀分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58158284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com