Учитывая среднее и дисперсию, существует простой вызов функции pylab, который будет строить нормальное распределение?
Или мне нужно сделать это самостоятельно?
Учитывая среднее и дисперсию, существует простой вызов функции pylab, который будет строить нормальное распределение?
Или мне нужно сделать это самостоятельно?
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as mlab
import math
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x,mlab.normpdf(x, mu, sigma))
plt.show()
Я не думаю, что есть функция, которая делает все это в одном вызове. Однако вы можете найти функцию плотности гауссова вероятности в scipy.stats
.
Таким образом, самый простой способ:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# Plot between -10 and 10 with .001 steps.
x_axis = np.arange(-10, 10, 0.001)
# Mean = 0, SD = 2.
plt.plot(x_axis, norm.pdf(x_axis,0,2))
Источники:
Ответ Unutbu правильный. Но поскольку наше среднее значение может быть больше или меньше нуля, я все равно хотел бы изменить это:
x = np.linspace(-3,3,100)
:
x = np.linspace(-3+mean,3+mean,100)
Если вы предпочитаете использовать пошаговый подход, вы можете рассмотреть решение, подобное следующим
import numpy as np
import matplotlib.pyplot as plt
mean = 0; std = 1; variance = np.square(std)
x = np.arange(-5,5,.01)
f = np.exp(-np.square(x-mean)/2*variance)/(np.sqrt(2*np.pi*variance))
plt.plot(x,f)
plt.ylabel('gaussian distribution')
plt.show()