使用高斯朴素贝叶斯的多重 class class化
Multi class classification using gaussian naive bayes
我知道朴素贝叶斯擅长二进制class化,但我想知道多class class化是如何工作的。
例如:我之前使用朴素贝叶斯进行了文本 class化,其中我对文本进行矢量化以查找文档中每个单词的概率,然后使用矢量化数据来拟合朴素贝叶斯class转化器。
现在,我正在处理如下所示的数据:
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 是 class 具有值(0,1 或 2)
我在数据集中有近 70000 个条目具有 class(输出)1、2 或 3。
将数据拆分为测试数据和训练数据后,我将训练数据拟合到 sklearn-GaussianNB 算法中。
拟合后,当我尝试预测测试数据时,它只是 class 验证 0 或 2。
所以,我的问题是,当我在文本 classification 期间拟合 navie bayes classifier 之前执行矢量化时,是否存在我需要对上述数据进行的数据预处理在用训练数据拟合 GaussianNB classifier 之前,它可以预测 multi-class(0,1 and 2) 而不是仅 (0 and 2).
I know that the Naive Bayes is good at binary classification, but I wanted to know how does the Multiclass classification works.
朴素贝叶斯中没有任何特定于二进制 class化的东西,它被设计用来做多重class class化就好了。
So, my question is as I performed vectorization before fitting the navie bayes classifier during text classification, is there and pre-processing of data I need to do for the above data before fitting the GaussianNB classifier with training data, so that it can predict multi-class(0,1 and 2) instead of only (0 and 2).
不,没有预处理,对于 multiclass 位。然而,对于高斯位——顾名思义,该模型将尝试使高斯 pdf 适合每个特征。因此,如果您的特征不遵循高斯分布 - 它可能会失败。如果你能弄清楚每个特征的转换(基于你拥有的数据)使它们更像高斯分布,这将有助于模型。比如你的一些特征好像是huge个数,如果不服从高斯分布会造成很大的困难。您可能想要规范化数据,甚至放弃这些功能。
您的模型从未预测 1 的唯一 原因是因为在朴素贝叶斯假设下,并且根据提供的数据 - 它的可能性不足以被考虑。您可以尝试如上所述规范化功能。如果失败,您还可以通过向 sklearn 提供自己的 prior
属性来人为 "overweight" 选择 classes(通常根据数据估计为 "how often sample with class X is encountered",如果您更改这是更高的数字 - class 将被认为更有可能)。
我知道朴素贝叶斯擅长二进制class化,但我想知道多class class化是如何工作的。
例如:我之前使用朴素贝叶斯进行了文本 class化,其中我对文本进行矢量化以查找文档中每个单词的概率,然后使用矢量化数据来拟合朴素贝叶斯class转化器。
现在,我正在处理如下所示的数据:
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 是 class 具有值(0,1 或 2)
我在数据集中有近 70000 个条目具有 class(输出)1、2 或 3。
将数据拆分为测试数据和训练数据后,我将训练数据拟合到 sklearn-GaussianNB 算法中。 拟合后,当我尝试预测测试数据时,它只是 class 验证 0 或 2。
所以,我的问题是,当我在文本 classification 期间拟合 navie bayes classifier 之前执行矢量化时,是否存在我需要对上述数据进行的数据预处理在用训练数据拟合 GaussianNB classifier 之前,它可以预测 multi-class(0,1 and 2) 而不是仅 (0 and 2).
I know that the Naive Bayes is good at binary classification, but I wanted to know how does the Multiclass classification works.
朴素贝叶斯中没有任何特定于二进制 class化的东西,它被设计用来做多重class class化就好了。
So, my question is as I performed vectorization before fitting the navie bayes classifier during text classification, is there and pre-processing of data I need to do for the above data before fitting the GaussianNB classifier with training data, so that it can predict multi-class(0,1 and 2) instead of only (0 and 2).
不,没有预处理,对于 multiclass 位。然而,对于高斯位——顾名思义,该模型将尝试使高斯 pdf 适合每个特征。因此,如果您的特征不遵循高斯分布 - 它可能会失败。如果你能弄清楚每个特征的转换(基于你拥有的数据)使它们更像高斯分布,这将有助于模型。比如你的一些特征好像是huge个数,如果不服从高斯分布会造成很大的困难。您可能想要规范化数据,甚至放弃这些功能。
您的模型从未预测 1 的唯一 原因是因为在朴素贝叶斯假设下,并且根据提供的数据 - 它的可能性不足以被考虑。您可以尝试如上所述规范化功能。如果失败,您还可以通过向 sklearn 提供自己的 prior
属性来人为 "overweight" 选择 classes(通常根据数据估计为 "how often sample with class X is encountered",如果您更改这是更高的数字 - class 将被认为更有可能)。