2016-04-21 104 views
-1

正態分佈有人能告訴我爲什麼這兩個函數返回不同的結果:與SciPy的

from scipy.stats import norm 
import math 

def gaussian(x, mean, variance): 
    return math.exp(-(x-mean)**2/2*variance**2)/math.sqrt(2*math.pi*variance**2) 

>>> gaussian(2,0,2) 
6.691511288244268e-05 
>>> norm.pdf(2,0,2) 
0.12098536225957168 

回答

0

您需要大約(2.0*variance**2)括號(否則,variance**2是分子而不是分母的一部分):

def gaussian(x, mean, variance): 
    return math.exp(-(x-mean)**2/(2.0*variance**2))/math.sqrt(2*math.pi*variance**2) 

隨着這一變化,

In [136]: norm.pdf(2,0,2) 
Out[136]: 0.12098536225957168 

In [137]: gaussian(2,0,2) 
Out[137]: 0.12098536225957168 
+0

非常感謝@unutbu –