贝叶斯数据分析_【数据分析】思维|方法|模型(三)贝叶斯分类
条件概率和贝叶斯准则在讨论贝叶斯模型前,先来讨论一下条件概率和贝叶斯准则。概率的概念来自对频率的认知,如果一件事情发生的频率很高,就说这件事发生的概率很高。而条件概率,顾名思义,也是属于概率范畴,不过有了些条件,科学的描述为,一件事在另一件事发生的前提下发生的概率。借助数学表达式,则有:p(y | x)=p(xy)/p(x)贝叶斯准则:贝叶斯准则告诉我们如何交换条件概率中的条件与结果,即如果已知
条件概率和贝叶斯准则
在讨论贝叶斯模型前,先来讨论一下条件概率和贝叶斯准则。
概率的概念来自对频率的认知,如果一件事情发生的频率很高,就说这件事发生的概率很高。而条件概率,顾名思义,也是属于概率范畴,不过有了些条件,科学的描述为,一件事在另一件事发生的前提下发生的概率。借助数学表达式,则有:
p(y | x)=p(xy)/p(x)
贝叶斯准则:
贝叶斯准则告诉我们如何交换条件概率中的条件与结果,即如果已知 P(x|y) ,要求 P(y|x) ,那么可以使用下面的计算方法:
p(y | x)=p(xy)/p(x)=p(y)p(x|y)/ p(x)
贝叶斯分类器
贝叶斯决策理论的核心思想:选择高概率对应的类别,即若P1(x)>p2(x) ,则为1类,反之,为2类。通常比较的是p(c1 | x) 和p(c2 | x)的大小。
应用贝叶斯准则求p(c1 | x):
p(c1 | x)=p(c1 x)/p(x)=p(x|c1)*p(c1) / p(x)
现在可有后面三个已知(可求解)的概率表示待求解概率
p(c1):训练集中1类数据占比
p(x|c1):假设x向量的所有特征互相独立,则有
p(x|c1) = p(x1.x2……|c1)
= p(x1|c1) X p(x2|c1) X……
继而可以求解训练集中1类数据各个特征出现的频率
p(x):同理。可以求解训练集中所有类别里各特征出现的频率
同理,p(c2 | x)可求。
在上面的描述中,隐含了一个建立贝叶斯模型的严格假设,即每个特征严格相互独立,由概率表示为:p(x|c1) = p(x1.x2……|c1)= p(x1|c1) X p(x2|c1) X……,可以说假设是相当的严格了。
贝叶斯分类的一般过程:
(1) 收集数据:可以使用任何方法。
(2) 准备数据:需要数值型或者布尔型数据。
(3) 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
(4) 训练算法:计算不同的独立特征的条件概率。
(5) 测试算法:计算错误率。
(6) 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴
素贝叶斯分类器,不一定非要是文本。
贝叶斯分类适用于标称型数据,在数据较少的情况下,依然有效,可以处理多类别问题。
sklearn 实现
import pandas as pd
import numpy as np
from sklearn import naive_bayes
x=np.array([[-1,-1], [-2, -1], [1, 1], [2, 1], [3, 2]])
y=np.array([1, 1, 2, 2, 2])
model=naive_bayes.GaussianNB()
fit=model.fit(x,y)
#查看查看训练集分类情况
fit.class_count_
array([2., 3.])
#预测
xtest=np.array([[-1,-2],[-2,-1], [-3, -1], [1, 3], [2, 2], [3, 1]])
fit.predict(xtest)
array([2, 1, 1, 2, 2, 2])
#评估
ytarget=[2, 1, 2, 1, 2, 2]
from sklearn import metrics
print(metrics.classification_report(ytarget,prediction))
#打印评估指标
precision recall f1-score support
1 0.50 0.50 0.50 2
2 0.75 0.75 0.75 4
accuracy 0.67 6
macro avg 0.62 0.62 0.62 6
weighted avg 0.67 0.67 0.67 6
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)