数据分析专栏记录之 -基础数学与统计知识 2 概率论基础与python

数据分析专栏记录之 -基础数学与统计知识专栏记录:

2、概率论基础与python


前言

概率论与python,是一件很有趣的事情吧!!!


知识内容

python 复制代码
# 离散分布
# ---伯努利分布   伯努利分布是针对单个观测结果的。
"""
我们有一个真的(1)的结果和一个假的(0)的结果。假设我们接受正面为真(我们可以选择正面为真或成功)。
那么,如果正面朝上的概率是  p ,相反情况的概率就是  1-p 。
"""

import seaborn as sns
from scipy.stats import bernoulli

# 单一观察值
# 生成数据(1000 points, possible outs: 1 or 0, probability: 50% for each)

data = bernoulli.rvs(size=1000, p=0.5)
ax = sns.distplot(data, kde=False, hist_kws={"linewidth":10, 'alpha':1})
ax.set(xlabel='Bernoulli', ylabel='Freq')

# 横坐标,0或者1    纵坐标 频率次数
python 复制代码
"""
二项式分布

伯努利分布是针对单个观测结果的。

多个伯努利观测结果会产生二项式分布。例如,连续抛掷硬币。
试验是相互独立的。一个尝试的结果不会影响下一个。

二项式分布可以表示为B(n, p)。 n 是试验次数, p 是成功的概率。
 p : 成功的概率   n : 实验次数    q=1-p : 失败的概率
"""

import matplotlib.pyplot as plt
from scipy.stats import binom

n = 20
# 实验的次数
p = 0.5
# 成功的概率
r = list(range(n + 1))
# print(r)  #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
pmf_list = [binom.pmf(r_i, n , p) for r_i in r]
# 绘画
plt.bar(r, pmf_list)
plt.show()

"""
该分布显示出成功结果数量增加的概率增加。
"""
python 复制代码
"""
均匀分布
所有结果成功的概率相同。掷骰子,1 到 6。
次数越多,结果越接近均匀。
"""
import numpy as np
import seaborn as sns

data = np.random.uniform(1, 6, 1000)
ax = sns.distplot(data, kde=False, hist_kws={"linewidth":10, 'alpha':1})
ax.set(xlabel='Uniform', ylabel='Freq')
python 复制代码
"""
poisson分布
它是与事件在给定时间间隔内发生频率相关的分布
 Po(λ) ,  λ是在指定时间间隔内预期发生的事件次数。它是在该时间间隔内发生的事件的已知平均值。
 X 是事件在指定时间间隔内发生的次数。如果事件遵循泊松分布,则:X ~  Po(λ)。
 在泊松分布中,事件彼此独立。事件可以发生任意次数。两个事件不能同时发生。

如每 60 分钟接到 4 个电话。这意味着 60 分钟内通话的平均次数为 4。
让我们绘制在 60 分钟内接到 0 到 10 个电话的概率。​​​​​​​
"""
!pip install poisson

import matplotlib.pyplot as plt
from scipy import stats
import poisson

r = range(0, 11)
lambda_val = 4   # 呼叫次数
data = poisson.pmf(r, lambda_val)   # 均值、    概率值
# 绘图
fig, sx = plt.subplots(1, 1, figsize=(10, 5))
ax.plot(r, data, 'bo', ms=8, label='poisson')
plt.ylabel("Probability", fontsize="12")
plt.xlabel("# Calls", fontsize="12")
plt.title("Poisson Distribution", fontsize="16")
ax.vlines(r, 0, data, colors='r', lw=5, alpha=0.5)

"""
总结,概率图对,但是真实的电话次数,要根据  个人的历史数据   来算
"""

阿巴阿巴。。。。偷偷懒,不弄不弄,反正没人评论。。。。

如果你有历史数据(例如 N 小时内共收到 M 个电话),估计 λ 的方法很简单:

λ ^ = M N \hat{\lambda}=\frac{M}{N} \quad λ^=NM (单位: 每小时)

把估计的 λ 带入上面的代码,就得到基于历史的概率分布。

python 复制代码
"""
连续分布   ----正态、长尾、左偏、右偏、对数、指数分布

对数正态分布
随机变量 X 的对数服从正态分布的分布。
"""

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
X = np.linspace(0, 6, 1500)
std = 1
mean = 0
lognorm_distribution = stats.lognorm([std], loc=mean)
lognorm_distribution_pdf = lognorm_distribution.pdf(X)
fig, ax = plt.subplots(figsize=(8, 5))
plt.plot(X, lognorm_distribution_pdf, label="μ=0, σ=1")
ax.set_xticks(np.arange(min(X), max(X)))
plt.title("Lognormal Distribution")
plt.legend()
plt.show()


python 复制代码
"""指数分布
我们在 Poisson 分布中研究了在一定时间间隔内发生的事件。在指数分布中,
我们关注的是两个事件之间经过的时间。如果我们把上面的例子倒过来,那么两个电话之间需要多长时间?
因此,如果 X 是一个随机变量,遵循指数分布,则累积分布函数为:
"""
from scipy.stats import expon
import matplotlib.pyplot as plt
x = expon.rvs(scale=2, size=10000)
# 绘图
plt.hist(x, density=True, edgecolor='black')

μ \mu μ 是均值, e e e 是常数。


总结

阿巴阿巴,今天阿巴日记又做了


致谢

靠咖啡续命的牛马,👍点赞 📁 关注 💬评论 💰打赏。


参考

1\] deepseek等ai


往期回顾

- 数据分析专栏记录之 -基础数学与统计知识:1、描述性统计

相关推荐
Jia-Hui Su15 分钟前
GDSFactory环境配置(PyCharm+Git+KLayout)
git·python·pycharm
学习3人组1 小时前
手写数字识别代码
人工智能·python
古译汉书2 小时前
蓝桥杯算法之基础知识(2)——Python赛道
数据结构·python·算法·蓝桥杯
少陵野小Tommy2 小时前
Python能用古诗词数据库做什么7:根据标题、诗句查找诗歌
开发语言·数据库·python
IT·陈寒2 小时前
新手小白零基础搭建MCP教程
python·ai·tools·mcp
倔强青铜三2 小时前
苦练Python第42天:Python类(Class)初探,面向对象编程入门
人工智能·python·面试
倔强青铜三2 小时前
苦练Python第41天:如何用dir() 函数“透视一切”
人工智能·python·面试
倔强青铜三2 小时前
苦练Python第40天:模块加载与项目组织,让代码像乐高一样可复用!
人工智能·python·面试
跟橙姐学代码3 小时前
Python 集合:人生中最简单的真理,只有一次
前端·python·ipython
偷心伊普西隆4 小时前
Python Excel 通用筛选函数
python·excel·pandas