从零开始-Machine Learning学习笔记(22)-常见概率分布总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kabuto_hui/article/details/83513834
import scipy.stats as stats
import numpy as np
import matplotlib.pyplot as plt

1. 伯努利分布(Bernoulli distribution)

伯努利分布亦称“零一分布”、“两点分布”,即事件的结果只有两个值,且事件之间相互独立,例如抛一次硬币就为一次伯努利试验,结果要么为正面要么为反面,因此它符合伯努利分布。伯努利试验只做一次。

#定义随机变量
x_arr = np.array([0, 1]) 

# X为1的概率
p = 0.5

# 由PMF生成对应的概率
pr_arr = stats.bernoulli.pmf(x_arr, p)

plt.plot(x_arr, pr_arr, marker = 'o', linestyle = 'None' )
plt.vlines(x_arr, 0, pr_arr)
plt.xlabel('Events')
plt.ylabel('Probability')
plt.title('Bernoulli Distribution (p={:.2f})'.format(p))
plt.show()

在这里插入图片描述

2. 二项分布(Binomial Distribution)

二项分布就是重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且事件相互独立,事件发生与否的概率在每一次独立试验中都保持不变。当试验次数为1时,二项分布服从0-1分布。它计算的结果是做n次试验发生某个结果的概率,例如:抛一次硬币正面朝上的概率,抛两次正面朝上,抛n次正面朝上的概率。

#抛10次硬币正面朝上的概率

#定义随机变量
# 实验次数
n = 100
# 事件发生的概率
p = 0.5
x_arr = np.arange(0, n + 1, 1)
pr_arr = stats.binom.pmf(x_arr, n, p)

plt.plot(x_arr, pr_arr, marker='o', linestyle='None')
plt.vlines(x_arr, 0, pr_arr)
plt.xlabel('Events')
plt.ylabel('Probability')
plt.title('Binomial Distribution (n={}, p={:.2f})'.format(n, p))
plt.show()

在这里插入图片描述

3. 泊松分布(Poisson distribution)

泊松分布适合于描述单位时间内随机事件发生的次数。泊松分布描述已知一段时间内事件发生的平均数,求某个时间内发生的概率。如某一服务设施在一定时间内到达的人数,电话交换机接到呼叫的次数,汽车站台的候客人数,机器出现的故障数,自然灾害发生的次数,一块产品上的缺陷数等。

#某路口发生K次交通事故的概率,已知平均发生的次数为2
#定义随机变量
mu = 2
k = 50
x_arr = np.arange(0, k+1, 1)
pr_arr = stats.poisson.pmf(x_arr, mu)

plt.plot(x_arr, pr_arr, marker='o',linestyle='None')
plt.vlines(x_arr, 0, pr_arr)
plt.xlabel('Events')
plt.ylabel('Probability')
plt.title('Poisson Distribution (lambda={})'.format(mu))
plt.show()

在这里插入图片描述

4. 高斯分布(Gaussian distribution)

正态曲线呈钟型,两头低,中间高,左右对称。若随机变量X服从一个数学期望为μ、方差为σ2的正态分布,记为N(μ,σ2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

mu = 0 #平均值
sigma = 1 #标准差
x_arr = np.arange(-5, 5, 0.1)

#概率密度函数
y_arr = stats.norm.pdf(x_arr, mu, sigma)

plt.plot(x_arr, y_arr)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Gaussian Distribution ($\mu$={:.1f}, $\sigma^2$={:.1f})'.format(mu,sigma))
plt.grid()
plt.show()

在这里插入图片描述

5. 协方差及相关系数

# 温度(单位:摄氏度)
temp_list = [14.2, 16.4, 11.9, 15.2, 18.5, 22.1, 19.4, 25.1, 23.4, 18.1, 22.6, 17.2]

# 冰激凌销量(单位:元)
sale_list = [215, 325, 185, 332, 406, 522, 412, 614, 544, 421, 445, 408]

plt.scatter(temp_list, sale_list)
plt.xlabel('Temperature')
plt.ylabel('Sales')
plt.grid()
plt.show()

在这里插入图片描述

cov_matrix = np.cov(temp_list, sale_list)
print('协方差:', cov_matrix[0, 1])
print('协方差矩阵:\n', cov_matrix)
协方差: 484.09318181818196
协方差矩阵:
 [[   16.08931818   484.09318182]
 [  484.09318182 15886.81060606]]
corr_matrix = np.corrcoef(temp_list, sale_list)
print('相关系数:', corr_matrix[0, 1])
print('相关系数矩阵:\n', corr_matrix)
相关系数: 0.9575066230015952
相关系数矩阵:
 [[1.         0.95750662]
 [0.95750662 1.        ]]

猜你喜欢

转载自blog.csdn.net/kabuto_hui/article/details/83513834
今日推荐