数据分析专栏记录之 -基础数学与统计知识 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、描述性统计

相关推荐
Lululaurel4 小时前
深度模型瘦身术:从100MB到5MB的工业级压缩实战
pytorch·python·机器学习·模型压缩·模型优化·边缘部署
那雨倾城6 小时前
PiscCode:基于OpenCV的前景物体检测
图像处理·python·opencv·计算机视觉
一粒马豆7 小时前
flask_socketio+pyautogui实现的具有加密传输功能的极简远程桌面
python·flask·pyautogui·远程桌面·flask_socketio
Y.9998 小时前
Python 题目练习 Day1.2
开发语言·python
闲人编程9 小时前
使用Celery处理Python Web应用中的异步任务
开发语言·前端·python·web·异步·celery
MYX_30910 小时前
第四章 神经网络的学习
python·神经网络·学习
郝学胜-神的一滴11 小时前
Effective Python 第38条:简单的接口应该接受函数,而不是类的实例
开发语言·python·软件工程
海琴烟Sunshine11 小时前
leetcode 35.搜索插入的位置 python
python·算法·leetcode
海琴烟Sunshine11 小时前
leetcode 28. 找出字符串中第一个匹配项的下标 python
linux·python·leetcode
小蕾Java12 小时前
PyCharm快速上手指南,数据类型篇
ide·python·pycharm