懒人永不更新
绘制流程 & 直线/虚线
1.高斯分布
y = 1 2 π σ exp { ( x − μ ) 2 2 σ 2 } y=\frac{1}{\sqrt{2 \pi}\sigma} \exp \left \{ \frac{(x-\mu)^2}{2 \sigma^2} \right \} y=2πσ1exp{2σ2(x−μ)2}
import numpy as np
import matplotlib.pyplot as plt
import math
def Gaussian_distribution(x, mean, sigma):
return np.exp(-1*((x-mean)**2)/(2*(sigma**2)))/(math.sqrt(2*np.pi) * sigma)
#均值为0,方差为1的高斯分布
mean, sigma = 0, 1
#在-3到3之间采样30个点
x = np.linspace(mean - 3*sigma, mean + 3*sigma, 100)
y = Guassian_distribution(x, mean, sigma)
#绘制曲线
plt.plot(x, y, 'b')
#显示曲线
plt.show()
2.sigmoid
绘制曲线的流程
绘制直线/虚线
y = 1 1 + e − x y=\frac{1}{1+e^{-x}} y=1+e−x1
import numpy as np
import matplotlib.pyplot as plt
#sigmoid向左偏移5
def sigmoid(x):
return 1/(1+np.exp(-x+5))
#在-1到15之间采样30个点
x = np.linspace(-1,15,30)
y = sigmoid(x)
#绘制sigmoid
plt.plot(x,y)
#print(sigmoid(4))
plt.vlines(4,0,sigmoid(4),'black','--')
plt.hlines(sigmoid(4),-1,4,'black','--')
绘制虚线
#print(sigmoid(5.5))
plt.vlines(5.5,0,sigmoid(5.5),'black','--')
plt.hlines(sigmoid(5.5),-1,5.5,'black','--')
#print(sigmoid(6.1))
plt.vlines(6.1,0,sigmoid(6.1),'black','--')
plt.hlines(sigmoid(6.1),-1,6.1,'black','--')
plt.show()
1.写出表达式
2.区间
3.调用函数
4.绘制曲线
5.显示图像
直线 & 填充颜色 & 添加文本
3.拒绝采样
新增技能:
直线
填充颜色
添加文本
import numpy as np
import matplotlib.pyplot as plt
import math
def q_z(x, mean, sigma):
return np.exp(-1*((x-mean)**2)/(2*(sigma**2)))/(math.sqrt(2*np.pi) * sigma)
def p_z(x):
return 0.3*np.exp(-(x)**2/0.4) +0.8* np.exp(-(x-1.8)**2/0.6) +0.5* np.exp(-(x-3.1)**2/0.3)
#均值为0,方差为1的高斯分布
mean, sigma = 1.6, 1.5
M = 5
x = np.linspace(-2, 5, 100)
y = M * q_z(x, mean, sigma)
plt.plot(x,p_z(x),color = "black")
plt.plot(x, y, 'b')
#绘制直线,注意坐标点plt.plot([x1,x2],[y1,y2])
plt.plot([0,0],[0,p_z(0)],color = "g")
plt.plot([0,0],[p_z(0),M * q_z(0, mean, sigma)],color = "r")
#填充颜色
plt.fill_between(x,y,p_z(x),color = (0.7,0.7,0.7))
#添加文本
plt.annotate('$p(z)$',xy=(0.,0),xytext=(2,0.2),fontsize=15)
plt.annotate('$Mq(z)$',xy=(0.,0),xytext=(1.3,1),fontsize=15)
plt.annotate('$reject$',xy=(0.,0),xytext=(-1.3,0.5),fontsize=10)
plt.annotate('$accept$',xy=(0.,0),xytext=(-1.3,0.1),fontsize=10)
plt.show()