gpt4 book ai didi

python - 如何在scala中实现Python的norm.expect

转载 作者:行者123 更新时间:2023-12-01 01:56:20 25 4
gpt4 key购买 nike

我正在尝试在 scala 中实现这个 python 函数。有人可以帮忙吗?

Python 代码是:

from scipy.stats import norm
import numpy as np
def expected_spend(mu,sigma,cl):
return norm.expect(lambda x: np.minimum(x,cl),lb=0,ub=np.inf,loc=mu,scale=sigma)

我无法访问 scala 中的许多外部库,我正在尝试使用 Breeze 来实现它,但欢迎任何开源库推荐。

最佳答案

我找到了一个更数学的答案。

from scipy.stats import norm
import numpy as np
def expected_spend(mu,sigma,cl):
return norm.expect(lambda x:
np.minimum(x,cl),lb=0,ub=np.inf,loc=mu,scale=sigma)

可以重写为正态分布的二阶积分。积分的解决方案发布在这里:https://www.quora.com/How-do-I-evaluate-int_0-infty-frac-min-x-z-exp-frac-x-mu-2-2-sigma-2-sqrt-2-pi-sigma-dx?filter&nsrc=2&snid3=2409997057

所以scala中使用Breeze的解决方案是:

 import breeze.math._
import breeze.numerics._
import breeze.numerics.constants.Pi
val min_a_b_gaussian = (mu: Float, sigma: Float, CL: Float) => {
val CL2 = CL / ( sqrt(2) * sigma )
val mu2 = mu / ( sqrt(2) * sigma )
val result = (sigma / sqrt(2) )*((1/sqrt(Pi)) * ( exp(-1*mu2*mu2) - exp(-1*(CL2 - mu2)*(CL2 - mu2)) ) - (CL2 - mu2)*erf(CL2 - mu2) + CL2 + mu2*erf(mu2) )
result
}

关于python - 如何在scala中实现Python的norm.expect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140925/

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