我如何知道我要为 sci-kit learn 提供哪些先验知识?(朴素贝叶斯分类器。)

But*_*840 5 python scikit-learn

在 sci-kit learn 的朴素贝叶斯分类器中,您可以指定先验概率,分类器将在计算中使用这些提供的概率。但我不知道先验概率应该如何排序。

from sklearn.naive_bayes import BernoulliNB
data = [[0], [1]]
classes = ['light bulb', 'door mat']
classes.shuffle()  # This simulates getting classes from a complex source.
classifier = BernoulliNB(class_prior=[0, 1])  # Here we provide prior probabilities.
classifier.fit(data, classes)
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我如何知道哪个类被假定为 100% 先验?在指定先验概率之前,我是否需要考虑数据中类别的顺序?

我也有兴趣知道这个记录在哪里。

alk*_*lko 5

看来是无证的。当合适时,目标由 进行预处理LabelBinarizer,因此您可以使用 获取数据的类

from sklearn.preprocessing import LabelBinarizer
labelbin = LabelBinarizer()
labelbin.fit_transform(classes)
Run Code Online (Sandbox Code Playgroud)

然后labelbin.classes_包含目标数据的结果类 ( classes),按照与先验之一相对应的顺序。

  • 它没有针对朴素贝叶斯的记录,但在整个 scikit-learn 中,每个类参数的工作方式都是这样的。欢迎打补丁。 (3认同)
  • 所以我确实需要做一些额外的工作才能使 class_prior 顺序正确。如果 class_prior 能够接受字典,那就太好了。也许我会研究拉斯曼提到的补丁。 (2认同)