Biorąc pod uwagę średnią i wariancję istnieje proste wywołanie funkcji pylab, które wykreśli normalny rozkład?Python pylab działka normalna dystrybucja
Czy muszę sam je wykonać?
Biorąc pod uwagę średnią i wariancję istnieje proste wywołanie funkcji pylab, które wykreśli normalny rozkład?Python pylab działka normalna dystrybucja
Czy muszę sam je wykonać?
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()
nie istnieje, że jest to funkcja, która robi wszystko, co w jednym połączeniu. Jednak można znaleźć funkcję gęstości prawdopodobieństwa Gaussa w scipy.stats
.
więc najprostszym sposobem mogłem wymyślić jest:
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))
Źródła:
Nie musisz używać rozumienia listy. 'norm.pdf' może działać na' numpy.array'. Możesz napisać 'plt.plot (range, norm.pdf (range, 0, 2))'. – Avaris
@Avaris: To niesamowite, dzięki za napiwek. Zmieniono moją odpowiedź. – lum
Powinieneś prawdopodobnie zmienić 'norm.pdf' na' norm (0, 1) .pdf'. Dzięki temu łatwiej jest dostosować się do innych przypadków/zrozumieć, że generuje on obiekt reprezentujący zmienną losową. –
Odpowiedź Unutbu jest poprawna. Ale poniewaz nasza średnia może być większa lub mniejsza od zera, jeszcze bym to zmienić:
x = np.linspace(-3 * sigma, 3 * sigma, 100)
do tego:
x = np.linspace(-3 * sigma + mean, 3 * sigma + mean, 100)
Masz na myśli -3 * sigma + średnia, 3 * sigma + średnia? – SeF
Jeśli wolisz używać krok po kroku można rozważyć rozwiązanie takie jak:
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()
Dzięki za poprawkę, @platinor. – unutbu
parametry twojego komputera są naprawdę dziwne! Lepiej zrobić '' 'x = np.linspace (mu - 4 * sigma, mu + 4 * sigma, 100)' '' – Amen
@Amen: Tak, dzięki za poprawkę. – unutbu