[MLLIB] SPARK-4362: Added classProbabilities method for Naive Bayes

Added methods which accept an RDD or array and return a map of (label -> posterior prob.) for each input set rather than only returning the key with the maximum value. 
That's fine, but you need not promise a mutable Map in the return
type. You can return it as a scala.collection.Map

On Fri, Dec 5, 2014 at 3:51 PM, alanctgardner <notifications@github.com> wrote:
> In
> mllib/src/main/scala/org/apache/spark/mllib/classification/NaiveBayes.scala:
>
>> @@ -65,6 +65,24 @@ class NaiveBayesModel private[mllib] (
>>    override def predict(testData: Vector): Double = {
>>      labels(brzArgmax(brzPi + brzTheta * testData.toBreeze))
>>    }
>> +
>> +  def classProbabilities(testData: RDD[Vector]):
>> +   RDD[scala.collection.mutable.Map[Double, Double]] = {
>> +    val bcModel = testData.context.broadcast(this)
>> +    testData.mapPartitions { iter =>
>> +      val model = bcModel.value
>> +      iter.map(model.classProbabilities)
>> +    }
>> +  }
>> +
>> +  def classProbabilities(testData: Vector):
>> scala.collection.mutable.Map[Double, Double] = {
>
> Scala newbie. I couldn't find a better pattern to build the map than
> mutating it in the foreach. Should I just build a map then make it immutable
> for returning?
>
> —
> Reply to this email directly or view it on GitHub.