我知道朴素贝叶斯擅长二进制分类,但我想知道多类分类是如何工作的。
例如:我之前使用朴素贝叶斯进行文本分类,对文本进行矢量化以查找文档中每个单词的概率,然后使用矢量化数据来适应朴素贝叶斯分类器。
现在,我正在处理如下数据:
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个特征( and ),G是具有值(0、1或2)的类。
我在dataset中有将近70000个条目具有类(输出) 1、2或3。
在将数据分成测试数据和训练数据后,我将训练数据拟合为sklearn GaussianNB algo。在拟合之后,当我试图预测测试数据时,它只对0或2进行分类。
因此,我的问题是,在文本分类过程中,我在对navie分类器进行拟合之前进行了矢量化,在用训练数据对GaussianNB分类器进行拟合之前,是否需要对上述数据进行预处理,以便它能够预测多类(0、1和2)而不是仅(0和2)。
发布于 2017-11-26 00:20:25
我知道朴素贝叶斯擅长二进制分类,但我想知道多类分类是如何工作的。
在朴素贝叶斯中没有任何特定于二进制分类的东西,它被设计用来进行多类分类。
因此,我的问题是,在文本分类过程中,我在对navie分类器进行拟合之前进行了矢量化,在用训练数据对GaussianNB分类器进行拟合之前,是否需要对上述数据进行预处理,以便它能够预测多类(0、1和2)而不是仅(0和2)。
不,对于多类位没有预处理。但是,对于高斯位,顾名思义,该模型将尝试将高斯pdf适合于每个特性。因此,如果您的特性不遵循高斯分布-它可能会失败。如果您能够计算出每个特性的转换(基于您所拥有的数据),以使它们更像高斯,它将有助于模型。例如,您的一些特性似乎是巨大的数字,如果它们不遵循高斯分布,可能会造成严重的困难。您可能希望将数据规范化,甚至放弃这些功能。
是你的模型从未预测1的唯一原因,因为在朴素的Bayes假设下,并且提供了数据--这是不可能被考虑的。如上文所述,您可以尝试将功能标准化。如果失败,您还可以人为地“超重”选定的类,方法是提供自己的prior属性给sklearn (通常从数据中估计为“遇到X类的样本的频率”,如果将其更改为更高的数目-一个类将被认为更有可能)。
https://stackoverflow.com/questions/47491234
复制相似问题