2

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

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

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

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 个特征(AF),G 是具有值(0,1 或 2)的类

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

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

所以,我的问题是,当我在文本分类期间拟合 navie bayes 分类器之前执行矢量化时,在将 GaussianNB 分类器与训练数据拟合之前,是否需要对上述数据进行数据预处理,以便它可以预测多-class(0,1 和 2) 而不是只有 (0 和 2)。

4

1 回答 1

3

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

朴素贝叶斯中没有任何特定于二分类的内容,它旨在很好地进行多类分类。

所以,我的问题是,当我在文本分类期间拟合 navie bayes 分类器之前执行矢量化时,在将 GaussianNB 分类器与训练数据拟合之前,是否需要对上述数据进行数据预处理,以便它可以预测多-class(0,1 和 2) 而不是只有 (0 和 2)。

不,对于多类位没有预处理。但是,对于高斯位 - 顾名思义,该模型将尝试将高斯 pdf 拟合到每个特征。因此,如果您的特征不遵循高斯分布 - 它可能会失败。如果您可以计算出每个特征的转换(基于您拥有的数据)以使它们更像高斯,它将有助于模型。例如,您的某些特征似乎是巨大的数字,如果它们不遵循高斯分布,可能会导致严重的困难。您可能想要规范化您的数据,甚至删除这些功能。

您的模型从不预测 1的唯一原因是因为在朴素贝叶斯假设下,并且提供了数据 - 它不太可能被考虑。您可以尝试如上所述的规范化功能。如果这失败了,您还可以通过向priorsklearn 提供您自己的属性来人为地“超重”选定的类(通常从数据中估计为“遇到类 X 的样本的频率”,如果您将其更改为更高的数字 - 一个类将被认为更有可能)。

于 2017-11-26T00:20:25.220 回答