Scikit-learn 使用朴素贝叶斯进行 10 折交叉验证的多类分类

Posted

技术标签:

【中文标题】Scikit-learn 使用朴素贝叶斯进行 10 折交叉验证的多类分类【英文标题】:Scikit-learn using Naive Bayes for multiclass classification with 10 fold cross validation 【发布时间】:2014-05-08 16:00:45 【问题描述】:

我正在尝试使用 sklearn 中的朴素贝叶斯分类器进行多类分类。我想使用 10 倍交叉验证获得分数。假设 x 是我的特征数组,y 是标签向量,我这样做:

    clf = MultinomialNB(fit_prior=False)
    scores = cross_validation.cross_val_score(OneVsOneClassifier(clf), x, y, cv=10)

但这只是给了我每个折叠的 10 个分数的数组。我想要的是 OvO 分类器中每对类的分数。有关如何执行此操作的任何建议?

还有什么方法可以为 NB 分类器使用定制的平滑技术?

【问题讨论】:

【参考方案1】:

我想要的是来自 OvO 分类器的每对类的分数。

很遗憾,OvO 包装器目前没有公共 API 来获取这些分数。

还有什么方法可以为 NB 分类器使用定制的平滑技术?

不,Lidstone 平滑是目前唯一的选择。

【讨论】:

感谢您的回答!我决定通过在每个折叠处获取混淆矩阵并将它们相加得到最终的混淆矩阵来解决这个问题

以上是关于Scikit-learn 使用朴素贝叶斯进行 10 折交叉验证的多类分类的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn 朴素贝叶斯类库使用小结

在 python 中使用 BernoulliNB(朴素贝叶斯分类器)scikit-learn 的简单示例 - 无法解释分类

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

利用sklearn进行朴素贝叶斯分类

实战:朴素贝叶斯对文档进行分类

Scikit-Learn 朴素贝叶斯分类丨数析学院