gpt4 book ai didi

python - scipy 的 stats.rv_discrete 模块中 'sum pk not equal to 1' 错误的解决方法

转载 作者:行者123 更新时间:2023-12-05 05:11:02 26 4
gpt4 key购买 nike

在python3中,scipy的stats.rv_discrete函数要求概率之和为1,但由于内存中 float 的表示,概率之和不是1。

幸运的是,scipy 安装在我的主目录中,因此我能够注释掉检查 ~.local/lib/python3.7/site-packages/scipy/stats/_distn_infrastructure.py 中的总和的“if”行文件,从而使其工作。但是当这段代码要在另一个系统中运行时该怎么办。将文件复制到工作目录并导入它会导致太多错误。从头开始自定义代码(使用列表)似乎非常低效。

if len(xk) != len(pk):
raise ValueError("xk and pk need to have the same length.")
#if not np.allclose(np.sum(pk), 1):
#raise ValueError("The sum of provided pk is not 1.")

我希望得到的是从头开始的高效功能或适当的解决方法。

最佳答案

您可以规范化 pk 的值以避免错误。这将“强制”概率之和等于 1。

之前:

from scipy import stats
xk = np.arange(7)
pk = (0.1, 0.2, 0.3, 0.1, 0.1, 0.0, 0.19)
custm = stats.rv_discrete(name='custm', values=(xk, pk))

错误:ValueError:提供的 pk 之和不是 1。

之后:

from scipy import stats
xk = np.arange(7)
pk = (0.1, 0.2, 0.3, 0.1, 0.1, 0.0, 0.19)
pk_norm = tuple(p/sum(pk) for p in pk)
custm = stats.rv_discrete(name='custm', values=(xk, pk_norm))

结果:好的

关于python - scipy 的 stats.rv_discrete 模块中 'sum pk not equal to 1' 错误的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955224/

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