算法朴素贝叶斯法
Posted 数据科学与人工智能
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法朴素贝叶斯法相关的知识,希望对你有一定的参考价值。
笔者邀请您,先思考:
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},选出最大的概率。
朴素贝叶斯分类是将实例分到后验概率最大的类中。这等价于期望风险最小化。这就是朴素贝叶斯法所采用的原理。
条件概率公式:
实战代码
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
2
您有什么见解,请留言。
加入数据人圈子或者商务合作,请添加笔者微信。
数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习到有用知识。
平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。
您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。
我们努力坚持做原创,聚合和分享优质的省时的数据知识!
我们都是数据人,数据是有价值的,坚定不移地实现从数据到商业价值的转换!
点击阅读原文,进入数据人网,获取数据知识。
区块链传达,专注于分享区块链内容。
脚印英语,专注于分享英语口语内容。
以上是关于算法朴素贝叶斯法的主要内容,如果未能解决你的问题,请参考以下文章