使用Python找到近似值
我有一个叫做alpha的向量,还有一个叫做beta的向量。我想找到一个theta,使得从alpha和beta的第i个到第n个的所有估计值的总和等于60。
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秒,最后得到了theta为0.456。
有没有更快的方法来找到这个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)
1 个回答
1
你可以用 zip
和 sum
这两个工具来计算你想要的结果:
def f(theta):
return sum(1/(1 + exp(a*(b-theta)))) for a,b in zip(alpha, beta))