分类特征的朴素贝叶斯(非二进制)

数据挖掘 机器学习 分类 scikit-学习 分类数据 朴素贝叶斯分类器
2022-02-16 23:43:46

考虑到我的特征集是分类的,即每个特征存在超过 2 个类别,我如何将朴素贝叶斯分类器(使用 sklearn)用于数据集。

  1. 我到处找,有些人使用 GaussianNB,即使数据是分类的 (1,2...8)

https://www.google.com/url?q=https://blog.sicara.com/naive-bayes-classifier-sklearn-python-example-tips-42d100429e44&sa=D&source=hangouts&ust=1567686518476000&usg=AFQjCNGORHakHbk2ZntzNZ1wsTYG6QUhig

  1. 有些人建议将其转换为 One-Hot 编码,然后使用 BernoulliNB,这对我来说没有意义,因为这样新创建的特征将具有高度相关性,这与朴素贝叶斯的核心假设之一背道而驰。(例如颜色特征有 3 个值 - 蓝色、绿色、红色,我们从中创建 3 个特征;然后如果蓝色为 1,那么很明显红色和绿色将为 0。因此依赖)

  2. 有些人推荐使用 MultinomialNB,在我看来这没有意义,因为它认为特征值是频率计数。

有人可以指出我正确的方向吗?

1个回答

在最近的 scikit-learn 版本 (v0.22.1) 中,开发人员已将分类朴素贝叶斯添加到他们的朴素贝叶斯实现列表中:

https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.CategoricalNB.html

您还可以使用我的分类和/或高斯朴素贝叶斯实现:

https://github.com/remykarem/mixed-naive-bayes