朴素贝叶斯如何求得样本特征对应的类别的概率?
① 朴素贝叶斯公式可以使得贝叶斯公式展开为:
② 展开式中对每一个局部的进行统计计算。
注:因为在数据量很大的时候,根据中心极限定理,频率是等于概率的。
③ 统计 p(嫁) =
- 首先,整理训练数据,嫁的样本数如下,一共有6个:
- p(嫁) = 6/12(12是总样本数) = 1/2
- p(不帅|嫁) 统计满足样本数如下,有3个:
- 则 p(不帅|嫁) = 3/6 = 1/2
- p(性格不好|嫁) 统计满足样本数如下,有一个:
- 则 p(性格不好|嫁) = 1/6
- p(矮|嫁) 统计满足样本数如下,有一个:
- 则 p(矮|嫁) = 1/6
- p(不上进|嫁) 统计满足样本数如下,有一个:
- 则 p(不上进|嫁) = 1/6
- 下面开始求分母,p(不帅)、p(性格不好)、p(矮)、p(不上进)
- 统计样本如下:
- 不帅统计如红色所示,占4个,p(不帅) = 4/12 = 1/3
- 性格不好统计如红色所示,占4个,那么p(性格不好) = 4/12 = 1/3
- 身高矮统计如红色所示,占7个,那么p (身高矮) = 7/12
- 不上进统计如上红色所示,占4个,那么p(不上进) = 4/12 = 1/3
④ p(不帅、性格不好、身高矮、不上进|嫁) 的所需项全部求出来了,带入进去即可:
= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)
⑤ 下面根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法。
注:公式如下:
注:一个一个来进行统计计算,这里与上面公式中,分母是一样的,于是我们分母不需要重新统计计算。
- p(不嫁) 根据统计计算如下(红色为满足条件):
- 则 p(不嫁)=6/12 = 1/2
- p(不帅|不嫁) 统计满足条件的样本如下(红色为满足条件):
- p(不帅|不嫁) = 1/6
- p(性格不好|不嫁) 据统计计算如下(红色为满足条件):
- p(性格不好|不嫁) =3/6 = 1/2
- p(矮|不嫁) 据统计计算如下(红色为满足条件):
- p(矮|不嫁) = 6/6 = 1
- p(不上进|不嫁) 据统计计算如下(红色为满足条件):
- 则 p(不上进|不嫁) = 3/6 = 1/2
- 根据公式:
- p(不嫁|不帅、性格不好、身高矮、不上进) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)
注:可以通过比较 p(不嫁|不帅、性格不好、身高矮、不上进) 和 p(嫁|不帅、性格不好、身高矮、不上进) 的概率,来判断样本特征应该对应哪个类别。
Python基础积累(numpy)
numpy数组合并
import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])
# 第一种方法:直接合并后打印
print(np.vstack((A,B)))
# 第二种方法:合并后赋值,然后打印
C = np.vstack((A,B))
print(C)
运行结果:
[[1 1 1]
[2 2 2]]
[[1 1 1]
[2 2 2]]
注:vertical stack 上下合并,组成一个多维数组。
print(A.shape,B.shape,C.shape)
运行结果:
(3,) (3,) (2, 3)
注:从shape中看出A,B均为拥有3项的数组(数列),C拥有2*3项的数组。
D = np.hstack((A,B))
print(D)
print(A.shape,B.shape,D.shape)
运行结果:
[1 1 1 2 2 2]
(3,) (3,) (6,)
注:horizontal stack 左右合并。
参考文献:
- 知乎/忆臻/带你理解朴素贝叶斯分类算法