0

我运行了这个简单的朴素贝叶斯程序:

import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
Y = np.array([1, 1, 1, 2, 2, 2])
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X, Y)
print(clf.predict([[-0.8, -1],[-0.9, -1]]))

我得到的结果是:

[1 1]

[-0.8, -1]分类为 1,分类为2。[-0.9, -1]如果我知道我的数据都来自同一个类,即[[-0.8, -1],[-0.9, -1]]来自同一个类,scikit-learn 的朴素贝叶斯分类器有没有办法将此数据分类为整体(在这种情况下给我 [1] 作为结果),而不是单独分类每个数据点。

4

1 回答 1

3

朴素贝叶斯分类器将每个输入单独分类(而不是作为一个组)。如果您知道所有输入都属于同一个(但未知)类,那么您需要做一些额外的工作来获得结果。一种选择是选择结果中计数最多的类,clf.predict但如果组中只有两个实例,则可能效果不佳。

另一种选择是为分类器调用predict_probaGaussianNB,它将返回每个输入的所有类的概率。然后,您可以使用单个概率(例如,您可以将每个类别的概率相加)来决定您希望如何对组进行分类。

您甚至可以结合这两种方法 - 使用predict并选择计数最高的类,但使用它predict_proba来打破平局。

于 2013-07-15T15:11:55.033 回答