如何获得 Spark Naive Bayes 分类器中类的概率?

Posted

技术标签:

【中文标题】如何获得 Spark Naive Bayes 分类器中类的概率?【英文标题】:How to get the probabilities of classes in Spark Naive Bayes classifier? 【发布时间】:2015-10-28 19:39:28 【问题描述】:

我正在 Spark 中训练 NaiveBayesModel,但是当我使用它来预测新实例时,我需要获取每个类的概率。我查看了NaiveBayesModel中predict函数的代码,得到如下代码:

val thetaMatrix = new DenseMatrix (model.labels.length,model.theta(0).length,model.theta.flatten,true)
val piVector = new DenseVector(model.pi)
//val prob = thetaMatrix.multiply(test.features)

val x = test.map p =>       
  val prob = thetaMatrix.multiply(p.features)          
  BLAS.axpy(1.0, piVector, prob)
  prob

这是否正常工作? BLAS.axpy(1.0, piVector, prob) 行一直给我一个错误,提示找不到值 'axpy'。

【问题讨论】:

或者有什么方法可以使用 pi 和 theta 计算概率 【参考方案1】:

在最近的 pull-request 中,它被添加到 Spark 主干中,并将在 Spark 1.5 中发布(关闭 SPARK-4362)。因此,您可以调用

def predictProbabilities(testData: RDD[Vector]): RDD[Vector]

def predictProbabilities(testData: Vector): Vector

【讨论】:

嗨。我也面临同样的问题。但是,我无法升级到 Spark 1.5。我必须坚持使用 Spark 1.1.0。您能否提供一些关于如何在 Spark 1.1.0 中实现此功能的提示?

以上是关于如何获得 Spark Naive Bayes 分类器中类的概率?的主要内容,如果未能解决你的问题,请参考以下文章

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

如何将 sklearn.naive_bayes 与(多个)分类特征一起使用? [关闭]

使用 Sklearn.naive_bayes.Bernoulli 的朴素贝叶斯分类器;如何使用模型进行预测?