1 全概率公式和贝叶斯公式
全概率公式和贝叶斯公式是概率论中非常重要的两个公式,它们在处理复杂概率问题时非常有用。
全概率公式
设事件组B1,B2,…,Bn是一个完备事件组,即它们两两互斥,且其并集为全集Ω。若对任意事件A,有P(Bi)>0,i=1,2,…,n,则
P(A)=P(A∣B1)P(B1)+P(A∣B2)P(B2)+…+P(A∣Bn)P(Bn)
我们可以将事件A看作问题的结果,将事件Bi看作问题的原因i。那么全概率公式是将可能引起事件A发生的所有可能原因{B1, B2, ... Bn}均看作单一的事件,通过将这个问题拆分,分别求出不同的起因情况下事件发生的概率之后,再汇总起来的。仍是是由原因到结果的一种解法。
例题1(全概率公式)
现追捕某犯罪嫌疑人,据分析他外逃、市内藏匿、自首的概率依次为0.3, 0.5, 0.2。又设在外逃及市内藏匿情况下,成功缉拿的概率依次是0.4, 0.7。问该犯罪嫌疑人最终归案的概率是多少?
解: 此问题的划分:外逃(B1)、市内藏匿(B2) 、自首(B3),设A:最终归案 则:
例题2(贝叶斯公式)
接着问题1,加入现在已知该逃犯被抓捕,求他是因为自首被抓捕归案的概率是多少?
解:在问题1中已经知道,嫌疑人最终可以因为三种情况被抓捕归案,分别是外逃、市内藏匿和投案自首。现在已经知道他被抓捕了,那么肯定是这三种情况之中的一种,现在题目求的是因为自首被抓捕归案的概率(在“因为自首而被抓捕归”案这个事件中,被抓捕归案是条件)这个事件的概率为:
与全概率公式解决的问题相反,贝叶斯公式是建立在条件概率的基础上寻找事情发生的原因,设B1,B2,...是样本空间S的一个划分,则对任意事件A(P(A)>0)有:
上面的公式即为贝叶斯公式,Bi常被认为是导致A放生的原因,因此P(Bi)(i=1,2,...)表示各种原因发生的可能性大小,因此称之为先验概率(权重);而P(Bi|A)(i=1,2,...)则反映了当产生了结果A之后,再对各种原因概率的新认识,称为后验概率。
贝叶斯公式恰好和全概率公式相反,作用在于“由结果推原因”:现在结果A已经发生了,再众多的原因中,某个原因导致事件发生的概率是多少呢?
2 朴素贝叶斯
朴素贝叶斯算法的核心思想是通过考虑特征概率来预测分类,即对于给出的待分类样本,求解在此样本出现的条件下各个类别出现的概率,哪个最大,就认为此待分类样本属于哪个类别。
举个例子:眼前有100个西瓜,好瓜和坏瓜个数差不多,现在要用这些西瓜来训练一个『坏瓜识别器』,我们要怎么办呢?
所谓『朴素』,是假定所有输入事件之间是相互独立。进行这个假设是因为独立事件间的概率计算更简单。
朴素贝叶斯模型的基本思想是:对于给定的待分类项
,求解在此项出现的条件下各个类别出现的概率
,哪个
最大,就把此待分类项归属于哪个类别。
3 朴素贝叶斯分类
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import datasets
import seaborn as sns
import pandas as pd
# 从Scikit-learn库中导入朴素贝叶斯分类器的高斯朴素贝叶斯模型。
from sklearn.naive_bayes import GaussianNB
from pandas.plotting import radviz
# 加载鸢尾花数据集
iris = datasets.load_iris()
# 将特征矩阵和目标变量转换为DataFrame
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target
Xtrain, Xtest, ytrain, ytest = train_test_split(iris.data,iris.target,random_state=12)
clf = GaussianNB()
clf.fit(Xtrain,ytrain)
predict_accuracy=accuracy_score(ytest, clf.predict(Xtest))
print("predict_accuracy=",predict_accuracy)
predict_accuracy= 0.9736842105263158