2.2 概率与统计(机器学习的基础)
概率与统计是机器学习的重要数学基础,很多算法依赖于数据的统计特性和概率分布。本章介绍:
- 均值、中位数、方差、标准差
- 常见概率分布(正态分布、泊松分布、指数分布)
- 贝叶斯定理及其应用
2.2.1 均值、中位数、方差、标准差
1. 均值(Mean)
均值(Mean)表示数据的平均值,计算公式:
均值 = (所有数据之和) / (数据个数)
Python 计算:
import numpy as npdata = [10, 20, 30, 40, 50]
mean_value = np.mean(data)
print("均值:", mean_value)
2. 中位数(Median)
中位数(Median)是排序后位于中间的值:
- 奇数个数据:取中间的那个数
- 偶数个数据:取中间两个数的平均值
Python 计算:
median_value = np.median(data)
print("中位数:", median_value)
3. 方差(Variance)
方差(Variance)衡量数据的离散程度,计算公式:
方差 = (所有数据与均值的差的平方和) / (数据个数)
Python 计算:
variance_value = np.var(data)
print("方差:", variance_value)
4. 标准差(Standard Deviation)
标准差(Standard Deviation)是方差的平方根:
标准差 = √(方差)
Python 计算:
std_value = np.std(data)
print("标准差:", std_value)
2.2.2 常见概率分布
1. 正态分布(Normal Distribution)
正态分布(也叫高斯分布)是一种常见的概率分布,符合“钟形曲线”。它由两个参数控制:
- 均值(Mean):决定曲线的中心
- 标准差(Standard Deviation):决定曲线的宽度
Python 生成正态分布数据:
import matplotlib.pyplot as plt
import scipy.stats as statsmu, sigma = 0, 1 # 均值和标准差
x = np.linspace(-5, 5, 100)
y = stats.norm.pdf(x, mu, sigma)plt.plot(x, y, label="正态分布")
plt.legend()
plt.show()
2. 泊松分布(Poisson Distribution)
泊松分布描述单位时间或单位空间内某事件发生的次数,例如:
- 每小时顾客的到达数量
- 每天网站的访问次数
计算公式:
P(k) = (λ^k * e^(-λ)) / k!
- λ(Lambda):期望值(某时间单位内的平均发生次数)
- k:发生次数
Python 计算:
from scipy.stats import poissonlam = 3 # 期望值
x = np.arange(0, 10)
y = poisson.pmf(x, lam)plt.bar(x, y, label="泊松分布")
plt.legend()
plt.show()
3. 指数分布(Exponential Distribution)
指数分布用于描述事件发生的时间间隔,比如:
- 客户等待服务的时间
- 设备故障的时间间隔
计算公式:
f(x) = λ * e^(-λx) (x >= 0)
- λ(Lambda):事件发生的平均频率
Python 计算:
from scipy.stats import exponlam = 1.0
x = np.linspace(0, 5, 100)
y = expon.pdf(x, scale=1/lam)plt.plot(x, y, label="指数分布")
plt.legend()
plt.show()
2.2.3 贝叶斯定理
贝叶斯定理用于计算事件发生的条件概率,公式如下:
P(A | B) = (P(B | A) * P(A)) / P(B)
其中:
- P(A | B):在事件B发生的情况下,事件A发生的概率
- P(B | A):在事件A发生的情况下,事件B发生的概率
- P(A) 和 P(B):A 和 B 各自的概率
贝叶斯推断示例
假设:
- 某疾病的患病率为 1%
- 测试准确率为 99%
- 某人测试结果为 阳性,求他实际患病的概率
Python 计算:
# 先验概率
P_A = 0.01 # 患病率
P_not_A = 1 - P_A # 未患病率
P_B_given_A = 0.99 # 测试阳性给定患病
P_B_given_not_A = 0.01 # 测试阳性给定未患病# 全概率公式计算 P(B)
P_B = P_B_given_A * P_A + P_B_given_not_A * P_not_A# 贝叶斯公式计算 P(A|B)
P_A_given_B = (P_B_given_A * P_A) / P_B
print("患病概率:", P_A_given_B)
总结
本章介绍了概率统计在机器学习中的应用,包括:
- 均值、中位数、方差、标准差
- 常见概率分布(正态、泊松、指数分布)
- 贝叶斯定理及其计算
掌握这些内容,有助于理解机器学习中的数据分析和概率推理。