如何指定scikit-learn的朴素贝叶斯的先验概率

发布于 2021-01-29 17:50:51

我正在将scikit-learn机器学习库(Python)用于机器学习项目。我使用的算法之一是高斯朴素贝叶斯实现。 GaussianNB()
函数的属性之一如下:

class_prior_ : array, shape (n_classes,)

我想手动更改该类,因为我使用的数据非常不正确,并且召回其中一个类非常重要。通过为该类别分配较高的先验概率,召回率应会增加。

但是,我不知道如何正确设置属性。我已经阅读了以下主题,但他们的答案对我不起作用。

如何在scikit-learn中为Naive Bayesclf手动设置先验概率?

我怎么知道我先给sci-kit学习什么?(朴素贝叶斯分类器。)

这是我的代码:

gnb = GaussianNB()
gnb.class_prior_ = [0.1, 0.9]
gnb.fit(data.XTrain, yTrain)
yPredicted = gnb.predict(data.XTest)

我认为这是正确的语法,我可以通过使用值来找出哪个类属于数组中的哪个位置,但结果保持不变。也没有给出错误。

从scikit-learn库设置 GaussianNB 算法的属性的正确方法是什么?

链接到GaussianNB的scikit文档

关注者
0
被浏览
183
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在scikit-learn中实现的GaussianNB()不允许您事先设置类。如果阅读在线文档,则会看到.class_prior_是 属性 而非
    参数 。一旦安装了GaussianNB(),就可以访问class_prior_属性。它是通过简单地计算训练样本中不同标签的数量来计算的。

    from sklearn.datasets import make_classification
    from sklearn.naive_bayes import GaussianNB
    
    
    # simulate data with unbalanced weights
    X, y = make_classification(n_samples=1000, weights=[0.1, 0.9])
    # your GNB estimator
    gnb = GaussianNB()
    gnb.fit(X, y)
    
    gnb.class_prior_
    Out[168]: array([ 0.105,  0.895])
    
    gnb.get_params()
    Out[169]: {}
    

    您会看到估算器足够聪明,可以考虑不平衡权重问题。因此,您不必手动指定先验条件。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看