前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【算法】朴素贝叶斯法

【算法】朴素贝叶斯法

作者头像
陆勤_数据人网
发布2018-07-30 16:45:45
3160
发布2018-07-30 16:45:45
举报

笔者邀请您,先思考:

1 您怎么理解朴素贝叶斯法?

2 朴素贝叶斯法的优劣是什么?

朴素贝叶斯算法

朴素贝叶斯是一种简单但是非常强大的线性分类器,它在垃圾邮件分类,疾病诊断中都取得了很大的成功。

它只所以称为朴素,是因为它假设特征之间是相互独立的

朴素贝叶斯的数学原理

1.后验概率(Posterior Probabilities):

为了更好地了解朴素贝叶斯分类器是怎么工作的,了解贝叶斯法则是很必要的。它可以被简单地描述成下面的公式:

后验概率=(条件概率∗先验概率现象概率)/(现象概率)

举一个简单的例子说明:

P(给定天上有乌云,下雨的概率)=(P(给定天上下雨,有乌云的概率)∗P(下雨的概率))/P(有乌云的概率)

ωj表示属于哪个类别,j∈{1,2,3,…,m}

xi表示特征向量中的第i个特征,i∈{1,2,3,…,n}

朴素贝叶斯的目标就是分别求得P(ωj|给定现象)j∈{1,2,3,…,m},选出最大的概率。

朴素贝叶斯分类是将实例分到后验概率最大的类中。这等价于期望风险最小化。这就是朴素贝叶斯法所采用的原理。

条件概率公式:

实战代码

代码语言:javascript
复制
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import cross_validation
def load_data():
   iris = datasets.load_iris()
   return cross_validation.train_test_split(iris.data,iris.target,test_size=0.25,random_state=0)

def test_naive_bayes(*data):
   # 模型初始化
   X_train,X_test,Y_train,Y_test=data
   clf = GaussianNB()
   clf.fit(X_train, Y_train)
   # 预测结果
   Y_prict = clf.predict(X_test)
   # 计算准确率
   cnt = 0
   for i in range(len(Y_test)):
       if Y_prict[i] - Y_test[i] < 1e-1:
           cnt += 1
       # print(ans[i], ' ', y_test[i])
   print("Accuracy: ", (cnt * 100.0 / len(Y_test)), "%")
   print('Score:%f'%clf.score(X_test,Y_test))

if  __name__=='__main__':
   X_train,X_test,Y_train,Y_test=load_data()
   test_naive_bayes(X_train,X_test,Y_train,Y_test)

Accuracy: 100.0 % Score:1.000000

文章推荐:

1 LDA算法及应用 2 word2vec与doc2vec模型

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档