项目上需要用到高斯分布、正太分布以及概率密度函数。我对这部分知识点产生了一些疑问,上网查资料发现很少有人在我这个点产生疑问(???可能是我太蠢了吧哈哈哈哈哈),所以我整理了一下自己看一看,如果后续有补充的会不断更新。
高斯分布究竟是个啥东西,网上介绍的人都介绍烂了,这里就不再赘述了。这里展示一下它的函数:
f ( x ) = 1 2 Π σ 2 e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2Πσ^2}}e^{-\frac{(x-μ)^2}{2σ^2}} f(x)=2Πσ2 1e−2σ2(x−μ)2
就是上一节展示的函数。。。
然后呢我的项目是这样(mean和σ的数值如图所示):
我们想要求 x = 2.06 x=2.06 x=2.06的概率,当然我们知道的是一点的概率为零,这里就要用到概率密度函数了。概率等于:
f ( x ) = 1 2 Π σ 2 e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2Πσ^2}}e^{-\frac{(x-μ)^2}{2σ^2}} f(x)=2Πσ2 1e−2σ2(x−μ)2
P = f ( x ) ∗ s i g m a P = f(x) * sigma P=f(x)∗sigma
就这样,写完了,有更新的内容我再回来补充,先这样,各位再见。
import numpy as np
import matplotlib.pyplot as plt
import math
def normal_distribution(x, mean, sigma):
return np.exp(-1*((x-mean)**2)/(2*(sigma**2)))/(math.sqrt(2*np.pi)* sigma)
mean1, sigma1= 2.03,0.05
x1= np.linspace(mean1- 6*sigma1, mean1+ 6*sigma1,100)
mean2, sigma2= 0,1
x2= np.linspace(mean2- 6*sigma2, mean2+ 6*sigma2,100)
mean3, sigma3= 5,1
x3= np.linspace(mean3- 6*sigma3, mean3+ 6*sigma3,100)
y1= normal_distribution(x1, mean1, sigma1)
y2= normal_distribution(x2, mean2, sigma2)
y3= normal_distribution(x3, mean3, sigma3)
plt.plot(x1, y1,'r', label='m=2.03,sig=0.05')
#plt.plot(x2, y2,'g', label='m=0,sig=1')
#plt.plot(x3, y3,'b', label='m=1,sig=1')
plt.legend()
plt.grid()
plt.show()
x_1 = 2.06
x_2 = (x_1-mean1)/sigma1
result_1 = normal_distribution(x_1, mean1, sigma1)
result_2 = normal_distribution(x_2, mean2, sigma2)
print("x_2:",x_2)
print("result_1:",result_1)
print("result_1*sigma:",result_1*sigma1)
print("result_2 :",result_2)