代码之家  ›  专栏  ›  技术社区  ›  The Novice Programmer

基于高斯朴素贝叶斯的多类分类

  •  2
  • The Novice Programmer  · 技术社区  · 7 年前

    我知道朴素贝叶斯擅长二进制分类,但我想知道多类分类是如何工作的。

    例如:我之前使用朴素贝叶斯进行了文本分类,其中我对文本进行了矢量化,以找到文档中每个单词的概率,然后使用矢量化数据拟合朴素贝叶斯分类器。

    现在,我正在处理如下数据:

    A、 B、C、D、E、F、G

    210, 203, 0, 30, 710, 2587452, 0

    273, 250, 0, 30, 725, 3548798, 1

    283, 298, 0, 31, 785, 3987452, 3

    在上述数据中,有6个特征(A-F),G是具有值(0,1或2)的类

    我在数据集中有将近70000个条目,它们的类(输出)为1、2或3。

    在将数据分解为测试和训练数据后,我将训练数据拟合到sklearn-GaussianNB算法中。 在拟合之后,当我尝试预测测试数据时,它只分类为0或2。

    因此,我的问题是,当我在文本分类过程中拟合navie-bayes分类器之前执行矢量化时,在用训练数据拟合GaussianNB分类器之前,是否需要对上述数据进行数据预处理,以便它可以预测多类(0,1和2),而不是仅预测(0和2)。

    1 回复  |  直到 7 年前
        1
  •  3
  •   lejlot    7 年前

    我知道朴素贝叶斯擅长二进制分类,但我想知道多类分类是如何工作的。

    朴素贝叶斯中没有特定于二进制分类的东西,它被设计成可以很好地进行多类分类。

    因此,我的问题是,当我在文本分类过程中拟合navie-bayes分类器之前执行矢量化时,在用训练数据拟合GaussianNB分类器之前,是否需要对上述数据进行数据预处理,以便它可以预测多类(0,1和2),而不是仅预测(0和2)。

    不,没有预处理 多类 数字,如果不遵循高斯分布,可能会造成严重困难。您可能希望使数据正常化,甚至删除这些功能。

    唯一的 你们的模型从不预测1的原因是因为在朴素贝叶斯假设下,并且有了提供的数据,这是不可能被考虑的。您可以尝试如上所述归一化特征。如果失败,你也可以通过提供你自己的课程来人为地“增肥”所选的课程 prior 属性为sklearn(通常根据数据估计为“遇到X类样本的频率”,如果将其更改为更高的数字,则认为类的可能性更大)。