【问题标题】:Error:value recallAt is not a member of org.apache.spark.mllib.evaluation.RankingMetrics[Double]错误:value recallAt 不是 org.apache.spark.mllib.evaluation.RankingMetrics [Double] 的成员
【发布时间】:2020-03-07 11:44:39
【问题描述】:

我想使用排名指标计算recall@25 和F1-score@25。

val predictionAndLabels = predicted.
    select($"prediction",$"label")
    .as[(Double, Double)]
val Arr = predictionAndLabels.rdd.map(x => (Array(x._1),Array(x._2)))
val matrix = new RankingMetrics(Arr)
Array(1, 25).foreach { k =>
  println(s"Recall at $k = ${matrix.recallAt(k)}")
}
      Array(1, 25).foreach { k =>
  println(s"F1-score at $k = ${matrix.F1scoreAt(k)}")
}

错误:

值recallAt 不是 org.apache.spark.mllib.evaluation.RankingMetrics[双]

如何解决?

【问题讨论】:

  • 你使用的 spark 版本是什么?
  • 我使用的是 spark 2.0.2 版。

标签: scala apache-spark recommendation-engine


【解决方案1】:

我认为 recallAt 方法没有在 spark 2.0.2 中定义,可以看到 here:

@Since("3.0.0")           // note this, it was defined at spark 3.0.0
  def recallAt(k: Int): Double = {
    require(k > 0, "ranking position k should be positive")
    predictionAndLabels.map { case (pred, lab) =>
      countRelevantItemRatio(pred, lab, k, lab.toSet.size)
    }.mean()
  }

您可以使用这个documentation 来计算 spark 2.0.2 的召回率和 fscore

如果有帮助请告诉我!!

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多