我怎么知道我给科普学习的先验是什么?(朴素贝叶斯分类器。



在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)

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

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

它似乎没有记录。拟合时,目标由LabelBinarizer预处理,因此您可以使用

from sklearn.preprocessing import LabelBinarizer
labelbin = LabelBinarizer()
labelbin.fit_transform(classes)

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

排序

后的顺序是classes的顺序,所以P( light bulb )=.4 将使用[.6, .4]指定,因为"door mat" < "light bulb" .

深度嵌套在代码库中,会发生以下情况: 您按采样为fit()调用提供的类将转换为一个集合,进行排序,然后按该顺序存储在分类器对象中(按字母或数字顺序)。为__init__()提供的先验与按此确切顺序的类相对应。

显然,这是没有记录的。

进一步阅读:

  • https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/naive_bayes.py
  • https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/preprocessing/label.py
  • https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/utils/multiclass.py

相关内容

  • 没有找到相关文章

最新更新