
54
|
第
2
章
这里我们有
4
个数据点,每个点有
4
个二分类特征。一共有两个类别:
0
和
1
。对于类别
0
(第
1
、
3
个数据点),第一个特征有
2
个为零、
0
个不为零,第二个特征有
1
个为零、
1
个
不为零,以此类推。然后对类别
1
中的数据点计算相同的计数。计算每个类别中的非零元
素个数,大体上看起来像这样:
In[55]:
counts = {}
for label in np.unique(y):
# 对每个类别进行遍历
# 计算(求和)每个特征中1的个数
counts[label] = X[y == label].sum(axis=0)
print("Feature counts:\n{}".format(counts))
Out[55]:
Feature counts:
{0: array([0, 1, 0, 2]), 1: array([2, 0, 2, 1])}
另外两种朴素贝叶斯模型(MultinomialNB 和 GaussianNB)计算的统计数据类型略有不同。
MultinomialNB 计算每个类别中每个特征的平均值,而 GaussianNB 会保存每个类别中每个
特征的平均值和标准差。
要想做出预测,需要将数据点与每个类别的统计数据进行比较,并将最匹配的类别作为预
测结果。有趣的是,MultinomialNB 和 BernoulliNB 预测公式的形式都与线性模型完全相同
(见
2.3.3
节)。不幸的是,朴素贝叶斯模型 coef_ 的含义与线性模型稍有不同,因为 coef_
不同于
w
。
优点
、
缺点和参数 ...