我知道NaiveBayes擅长于二进制分类,但我想知道多类分类是如何工作的。
例如:我之前使用朴素贝叶斯进行了文本分类,其中我对文本进行了矢量化以查找文档中每个单词的概率,后来使用矢量化数据来匹配朴素贝叶斯分类器。
现在,我正在处理的数据看起来像:
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-高斯NB算法。拟合后,当我试图预测测试数据时,它只是将0或2分类。
因此,我的问题是,当我在文本分类过程中拟合navie-bayes分类器之前执行矢量化时,在用训练数据拟合GaussianNB分类器之前,是否需要对上述数据进行预处理,以便它可以预测多类(0,1和2),而不是仅预测(0和2)。
我知道NaiveBayes擅长于二进制分类,但我想知道多类分类是如何工作的。
朴素贝叶斯中没有专门针对二分类的东西,它被设计成做多类分类就好了。
因此,我的问题是,当我在文本分类过程中拟合navie-bayes分类器之前执行矢量化时,在用训练数据拟合GaussianNB分类器之前,是否需要对上述数据进行预处理,以便它可以预测多类(0,1和2),而不是仅预测(0和2)。
不,对于多类位,没有预处理。然而,对于高斯比特,顾名思义,该模型将尝试使高斯pdf适合每个特征。因此,如果您的功能不遵循高斯分布-它可能会失败。如果你能计算出每个特征的变换(基于你拥有的数据),使它们更像高斯分布,这将有助于模型。例如,您的一些功能似乎是巨大的数字,如果它们不遵循高斯分布,可能会造成严重的困难。您可能希望规范化数据,甚至删除这些功能。
你的模型从不预测1的唯一原因是,在朴素的贝叶斯假设下,在提供数据的情况下,它不太可能被考虑。您可以尝试如上所述使功能正常化。如果这失败了,你也可以通过提供你自己的先验
属性来人为地“超重”选定的类(通常从数据中估计为“遇到类X的采样频率”,如果你把它改成更高的数字类将被认为更有可能)。