标签:测试数据 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