概率密度函数(PDF)和累积分布函数(CDF)以及scipy.stats.norm使用

前言

做算法的过程中,可能会遇到概率密度分布等知识,这里补一下对应的scipy这块的使用

主要是from scipy.stats import norm

对应的也是 正态分布(高斯分布)

  • https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html

正态分布公式为:

0cf67a5018b85a6866b129b9fff3066f.png

图形大概长这样:

26fcd5cc8924268aed4aadb20be79314.png

这个图就是概率密度

这里说几个名词

  • 随机变量(包括离散随机变量 + 连续随机变量)

  • 概率密度函数(Probability Density Functions - PDF)

  • 累积分布函数(Cumulative Distribution Functions - CDF)

具体可以看这篇文章,用一些小例子来说明的很好理解(抛硬币) https://blog.csdn.net/neweastsun/article/details/124191560

概率密度函数(PDF)和累积分布函数(CDF)以及scipy.stats.norm使用

代码

from scipy.stats import norm 里提供了对应的pdf和cdf的功能

from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2)

x = np.linspace(norm.ppf(0.0001),
                norm.ppf(0.9999), 100)
print(x)
rv = norm()
ax[0].bar(x, rv.pdf(x), width=0.01, label='pdf')
ax[0].set_xticks([-3, -2, -1, 0, 1, 2, 3])
ax[0].set_yticks([0.0, 0.1, 0.2, 0.3, 0.4])
ax[0].set_title("pdf")
ax[1].plot(x, rv.cdf(x), '-^', linewidth=1, label='cdf', markersize=2)
ax[1].set_xticks([-3, -2, -1, 0, 1, 2, 3])
ax[1].set_yticks(np.linspace(0.0, 1.0, 5))
ax[1].set_title("cdf")
plt.show()

结果:

8e7f0efbdc8df00c25186e99f392a664.png

左侧是概率密度分布图(0左右为峰值,两侧依次下降,并高度对称),右侧是累积分布图(最大值为1, 范围为0-1)

为了画这幅图我们需要原始的数据(其实就是pdf和cdf图像的x轴数据),可以通过ppf的方式来进行获取,ppf是cdf的反向计算,相当于给予一个累积分位点(0到1, 0接近pdf图的最左侧,1接近pdf的图的最右侧),返回对应的x值。

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

01a92ec21f34c7ef0604e4654a7d8859.jpeg

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

猜你喜欢

转载自blog.csdn.net/qq_33431368/article/details/131820488