0

所以我有一个 alpha 向量,一个 beta 向量,当所有估计值(对于 alpha 的 i 到 n 和 beta 的 i 到 n)的总和等于 60 时,我试图找到一个 theta。

math.exp(alpha[i] * (theta - beta[i])) / (1 + math.exp(alpha[i] * (theta - beta[i])

在此处输入图像描述

基本上我所做的是从 theta = 0.0001 开始,遍历,计算所有这些总和,当它低于 60 时,继续每次添加 0.0001,而高于 60 意味着。

我以这种方式找到了 theta 值。问题是,我使用 Python 花了大约 60 秒,才找到 0.456 的 theta。

找到这个 theta 的更快方法是什么(因为我想将它应用于其他数据)?

def CalcTheta(score, alpha, beta):
    theta = 0.0001
    estimate = [score-1]

    while(sum(estimate) < score):

        theta += 0.00001

        for x in range(len(beta)):
            if x == 0:
                estimate = []

            estimate.append(math.exp(alpha[x] * (theta - beta[x]))  / (1 +  math.exp(alpha[x] * (theta - beta[x]))))

    return(theta)
4

1 回答 1

1

您可以使用zipandsum来计算您的目标函数:

  def f(theta):
    return sum(1/(1 + exp(a*(b-theta)))) for a,b in zip(alpha, beta))
于 2013-03-18T15:58:29.973 回答