码迷,mamicode.com
首页 > 其他好文 > 详细

朴素贝叶斯

时间:2021-03-17 15:04:06      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:测试数据   hat   条件   python   str   贝叶斯公式   lang   假设   pre   

朴素贝叶斯(Naive Bayes)是一种基于概率理论的监督学习算法。

这里提下贝叶斯公式

\(P(C,X) = P(C|X)P(X)=P(X|C)P(C)\)

\(P(C|X) = \frac{P(X|C)P(C)}{P(X)}\)

现在我希望我预测的 \(\hat{C} = argmax_{c_j\in C}P(c_j|T)\),C表示所有label,T是测试数据

从而有,\(\hat{C} = argmax_{c_j\in C} \frac{P(T|c_j)P(c_j)}{P(T)} = argmax_{c_j\in C}P(T|c_j)P(c_j)\)

假设\(T=(x1,x2,x3,...,xn)\),得到

技术图片

为了简化问题,我们naive地假设数据是依条件相互独立的,从而

技术图片

另外,还有两个实际操作中的假设是1. 频率=概率 2. 训练集与测试集同分布。

sklearn

官方文档放在这里,里面包括几种NB的形式,下面展示了一个多项NB的使用。

# class sklearn.naive_bayes.MultinomialNB(*, alpha=1.0, fit_prior=True, class_prior=None)

>>> import numpy as np
>>> rng = np.random.RandomState(1)
>>> X = rng.randint(5, size=(6, 100))
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.fit(X, y)
MultinomialNB()
>>> print(clf.predict(X[2:3]))
[3]

最后是注意Smoothing的事项,因为实际中会出现很多0的概率(频率)导致整个概率乘积为0。在sklearn中也可以指定。

朴素贝叶斯

标签:测试数据   hat   条件   python   str   贝叶斯公式   lang   假设   pre   

原文地址:https://www.cnblogs.com/mrdoghead/p/14546957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!