机器学习 - 先验、后验和条件概率

先验概率 (Prior Probability)

先验概率表示在获得额外信息之前对事件发生的原始概率。它是基于以往经验或背景知识对事件的初步估计。例如,在进行一次医学诊断之前,患某种病的概率可以被认为是该疾病的先验概率。

用数学符号表示为:

$$ P(A) $$

这里,$P(A)$ 是事件 $A$ 发生的先验概率。

后验概率 (Posterior Probability)

后验概率是指在观察到某些数据或证据之后,更新了对事件的概率。它是在获得额外信息之后的概率,是通过贝叶斯定理计算得到的。

用数学符号表示为:

$$ P(A \mid B) $$

这里,$P(A \mid B)$ 是在观察到事件 $B$ 之后,事件 $A$ 的后验概率。

条件概率 (Conditional Probability)

条件概率是指在某些条件下(已知某些其他事件发生)某个事件发生的概率。它描述了在给定另一事件已发生的前提下,事件发生的可能性。

用数学符号表示为:

$$ P(A \mid B) = \frac{P(A \cap B)}{P(B)} $$

其中:

  • $P(A \mid B)$ 表示在 $B$ 发生的条件下,事件 $A$ 发生的概率。
  • $P(A \cap B)$ 表示事件 $A$ 和 $B$ 同时发生的概率。
  • $P(B)$ 表示事件 $B$ 发生的概率。

Python 示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 导入库
import numpy as np

# 共 100 个样本,每个样本 x 都包括 5 个特征
np.random.seed(0)
x = np.random.randn(100, 5)

# 共 100 个样本,每个样本 x 都属于 {0,1,2,...,9} 类别中的一个
np.random.seed(0)
y = np.random.randint(0, 10, 100)

# 初始化先验概率,P[i] 表示类别 i 出现的概率
P = np.zeros(10)  # 这里应该是 10,而不是 100

# 任务 1:计算每个标签的先验概率
for i in range(10):
    P[i] = np.sum(y == i) / len(y)


# 打印结果
for i in range(10):
    print("类别 i 出现的概率为:", P[i])