我运行了这个简单的朴素贝叶斯程序:
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),而不是单独对每个数据点进行分类。
发布于 2013-07-15 23:11:55
朴素贝叶斯分类器对每个输入进行单独分类(而不是分组)。如果您知道所有的输入都属于同一个(但未知的)类,那么您需要做一些额外的工作才能得到结果。一种选择是在clf.predict的结果中选择计数最大的类,但如果组中只有两个实例,那么这种方法可能不会很好地工作。
另一种选择是为GaussianNB分类器调用predict_proba,这将返回每个输入的所有类的概率。然后,您可以使用单个概率(例如,您可以对每个类进行求和)来决定如何对组进行分类。
您甚至可以结合使用这两种方法-使用predict并选择计数最高的类,但使用predict_proba打破平局。
https://stackoverflow.com/questions/17656418
复制相似问题