Sklearn朴素贝叶斯分类器,用于属于同一类的数据

时间:2013-07-15 14:16:17

标签: python machine-learning scikit-learn

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

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,[-0.9, -1]被归类为2。 如果我知道我的数据都来自同一个类,即[[-0.8, -1],[-0.9, -1]]来自同一个类,是否有一种方法可以让scikit-learn的朴素贝叶斯分类器将这些数据整体分类(并给我[1]因此,在这种情况下),而不是单独分类每个数据点。

1 个答案:

答案 0 :(得分:3)

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

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

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