18.1 为连续的数据训练分类器
问题描述
数据的特征是连续的(非离散值),我们想训练一个朴素贝叶斯分类器。
解决方案
在scikit-learn中使用高斯朴素贝叶斯分类器:
讨论
最常用的朴素贝叶斯分类器就是高斯朴素贝叶斯分类器。在这个分类器中,我们假设对于一个分类为y的观察值,其特征x的似然概率服从正态分布:
这里 σy²um和 μyno是分类y的特征xj的方差和平均值。因为我们假设观察值的特征服从正态分布,所以在所有特征都是连续的数的场景下,最适合使用高斯朴素贝叶斯分类器。
在scikit-learn中,我们训练高斯朴素贝叶斯分类器时像训练其他模型一样使用了fit方法,然后就可以预测一个观察值的分类了:
朴素贝叶斯分类器有一点很有意思,它允许我们为每个目标分类设定一个先验概率。可以使用GaussianNB的priors参数来设定,这个参数的值是一个列表,其中的元素为目标向量中每个分类的概率:
如果不给priors参数设定任何值,就会基于我们的数据来计算先验概率。
最后需要指出一点,GaussianNB产生的预测概率(使用predict_proba输出)是没有经过校正的。也就是说,它们是不可信的。如果想生成有用的预测概率,就需要用保序回归(isotonic regression)或者其他相关方法来校正。
延伸阅读
●《在机器学习中朴素贝叶斯分类器是如何工作的》(Dataaspirant, http://bit.ly/2F6trtt)
本书评论