平均と分散が与えられた場合、正規分布をプロットする単純な関数呼び出しはありますか?
332490 次
10 に答える
273
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()
于 2012-04-13T09:25:09.900 に答える
58
1回の呼び出しですべてを行う関数はないと思います。ただし、ガウス確率密度関数は にあり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))
plt.show()
ソース:
于 2012-04-13T09:29:36.937 に答える
11
ウヌッブの答えは正しいです。しかし、私たちの平均はゼロよりも大きい場合も小さい場合もあるため、これを変更したいと思います。
x = np.linspace(-3 * sigma, 3 * sigma, 100)
これに:
x = np.linspace(-3 * sigma + mean, 3 * sigma + mean, 100)
于 2015-02-07T10:21:31.920 に答える
1
上記の例を試したときにmatplotlib.mlabがエラーメッセージを表示したため、scipyをインストールする必要がありましたMatplotlibDeprecationWarning: scipy.stats.norm.pdf
。したがって、サンプルは次のようになります。
%matplotlib inline
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, scipy.stats.norm.pdf(x, mu, sigma))
plt.show()
于 2018-07-05T09:34:34.287 に答える