条件概率公式:
P
(
B
∣
A
)
=
P
(
A
,
B
)
P
(
B
)
P(B|A)=\frac {P(A,B)}{P(B)}
P(B∣A)=P(B)P(A,B)
贝叶斯公式:
P
(
A
∣
B
)
=
P
(
A
,
B
)
P
(
B
)
=
P
(
B
∣
A
)
⋅
P
(
A
)
P
(
B
)
P(A|B)=\frac{P(A,B)}{P(B)}=\frac {P(B|A)·P(A)}{P(B)}
P(A∣B)=P(B)P(A,B)=P(B)P(B∣A)⋅P(A)
其中,
P(A)是A的先验概率或边缘概率,它不考虑任何B方面的因素;
P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率;
P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率;
P(B)是B的先验概率或边缘概率,也作标准化常量(normalized constant)。
二、贝叶斯分类法
现给定数据集
D
=
(
(
x
(
1
)
,
y
(
i
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
.
.
.
,
(
x
(
m
)
,
y
(
m
)
)
)
D={((x^{(1)},y^{(i)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)}))}
D=((x(1),y(i)),(x(2),y(2)),...,(x(m),y(m))),假设有K种可能的类别标记,
C
=
{
c
1
,
c
2
,
.
.
.
,
c
K
}
C=\{c_1,c_2,...,c_K\}
C={c1,c2,...,cK},则
,
y
(
i
)
∈
{
c
1
,
c
2
,
.
.
.
,
c
k
}
,y^{(i)}\in\{c_1,c_2,...,c_k\}
,y(i)∈{c1,c2,...,ck}。
贝叶斯分类的实质就是:给定一个样本
x
(
i
)
x^{(i)}
x(i),其属于类别k的概率为:
P
(
c
k
∣
x
(
i
)
)
P(c_k|x^{(i)})
P(ck∣x(i)),贝叶斯分类的分类结果就是条件概率
P
(
c
∣
x
(
i
)
)
P(c|x^{(i)})
P(c∣x(i))(或者称为似然)最大的那个类别,即:
a
r
g
m
a
x
c
k
∈
C
P
(
c
k
∣
x
(
i
)
)
\mathop{arg\;max}\limits_{c_k\in C}\;P(c_k|x^{(i)})
ck∈CargmaxP(ck∣x(i)) 我们将我们前面介绍的贝叶斯公式换成符合数据集D的形式:
P
(
c
∣
x
)
=
P
(
x
∣
c
)
⋅
P
(
c
)
P
(
x
)
P(c|x)=\frac {P(x|c)·P(c)}{P(x)}
P(c∣x)=P(x)P(x∣c)⋅P(c) 给定数据集的情况下,我们利用大数定律就可以确定
P
(
c
)
P(c)
P(c),对于确定的样本
x
x
x(
x
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
x=[x_1,x_2,...,x_n]
x=[x1,x2,...,xn])n为属性个数,对所有类别来说
P
(
x
)
P(x)
P(x)也是确定的。 假设各个属性相互独立(这就是“朴素”),则:
P
(
x
∣
c
)
=
∏
j
=
1
n
P
(
x
j
∣
c
)
P(x|c)=\prod_{j=1}^{n}P(x_j|c)
P(x∣c)=j=1∏nP(xj∣c)
基于上面所述的贝叶斯判定准则,可以得出朴素贝叶斯分类器的表达式为:
h
n
b
(
x
)
=
a
r
g
m
a
x
c
∈
C
P
(
c
)
∏
j
=
1
n
P
(
x
j
∣
c
)
h_{nb}(x)=\mathop{arg\;max}\limits_{c\in C}\;P(c)\prod_{j=1}^{n}P(x_j|c)
hnb(x)=c∈CargmaxP(c)j=1∏nP(xj∣c)
对离散属性,令
D
c
,
x
i
D_{c,x_i}
Dc,xi表示
D
c
D_c
Dc中在第j个属性上取值为
x
j
x_j
xj的样本组成的集合,则:
P
(
x
j
∣
c
)
=
∣
D
c
,
x
i
∣
∣
D
c
∣
P(x_j|c)=\frac{|D_{c,x_i}|}{|D_c|}
P(xj∣c)=∣Dc∣∣Dc,xi∣
对连续属性可使用概率密度函数,假定
p
(
x
j
∣
c
)
∼
N
(
μ
c
,
j
,
δ
c
,
i
2
)
p(x_j|c)\sim N(\mu_{c,j},\delta^2_{c,i})
p(xj∣c)∼N(μc,j,δc,i2),其中
μ
c
,
j
,
δ
c
,
i
2
\mu_{c,j},\delta^2_{c,i}
μc,j,δc,i2分别表示第c类样本在第i个属性上取值的均值和方差,则:
p
(
x
i
∣
c
)
=
1
2
π
δ
c
,
i
e
x
p
(
−
(
x
i
−
μ
c
,
i
)
2
2
δ
c
,
i
2
)
p(x_i|c)=\frac{1}{\sqrt {2\pi}\delta_{c,i}}exp(-\frac{(x_i-\mu_{c,i})^2}{2\delta^2_{c,i}})
p(xi∣c)=2πδc,i1exp(−2δc,i2(xi−μc,i)2)
明显可以看出朴素贝叶斯分类器更适用于离散属性,所以我们也可以考虑连续离散化处理的方法。
三、sklearn实现贝叶斯分类
# -*- coding:utf-8 -*-"""
@author: 1
@file: bayes.py
@time: 2019/11/30 1:25
"""from sklearn.naive_bayes import GaussianNB
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
df = pd.read_csv(r'D:\workspace\python\machine learning\data\iris.csv')
X = df.iloc[:,0:3]
Y = df.iloc[:,4]
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)# 属性假设为高斯分布
gnb = GaussianNB()
model = gnb.fit(x_train, y_train)
y_pred = model.predict(x_test)print('accuracy_score:', accuracy_score(y_test, y_pred))