Advertisement
Guest User

Untitled

a guest
Aug 24th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.70 KB | None | 0 0
  1. object RecommendationScores {
  2.  
  3.   private def precisionAtK(k: Int, actual: Array[Int], predicted: Array[Int]): Double = {
  4.     //val pred = predicted.take(k)
  5.     val a = actual.length
  6.     //actual.intersect(pred).length / a : Double
  7.     a
  8.   }
  9.  
  10.   def averagePrecisionAtK(k: Int) = {
  11.     new Score[Array[Int]] with PerformanceScore {
  12.       //TODO
  13.       override def evaluate(data: DataSet[(Array[Int], Array[Int])]): DataSet[Double] = {
  14.         val perUser = data.map { trueAndPred => precisionAtK(k, trueAndPred._1, trueAndPred._2)
  15.           //val pred = trueAndPred._2.take(k)
  16.           //val a = trueAndPred._1.length
  17.           //trueAndPred._1.intersect(pred).length / a : Double}
  18.           //a
  19.         }
  20.           //val perUser = data.map(trueAndPred => 2)
  21.         perUser.mean()
  22.       }
  23.     }
  24.   }
  25.  
  26.   def meanAveragePrecisionAtK(k: Int) = {
  27.     new Score[Array[Int]] with PerformanceScore {
  28.       //TODO
  29.       override def evaluate(data: DataSet[(Array[Int], Array[Int])]): DataSet[Double] = {
  30.         val perUser = data.map{ trueAndPred =>
  31.           val precisions = 1 to k map (_k => precisionAtK(_k, trueAndPred._1, trueAndPred._2))
  32.           precisions.sum / k
  33.         }
  34.         perUser.mean()
  35.       }
  36.     }
  37.   }
  38.  
  39.   def averageRecallAtK(k: Int) = {
  40.     new Score[Array[Int]] with PerformanceScore {
  41.       //TODO
  42.       override def evaluate(data: DataSet[(Array[Int], Array[Int])]): DataSet[Double] = {
  43.         val perUser = data.map { trueAndPred =>
  44.           val act = trueAndPred._1.toSet
  45.           val pred = trueAndPred._2.take(k).toSet
  46.           act.intersect(pred).size / k : Double
  47.         }
  48.         perUser.mean()
  49.       }
  50.     }
  51.   }
  52.  
  53.   private def iDCG(k: Int) = {
  54.  
  55.   }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement