jch 4 ay önce
ebeveyn
işleme
c815ac6879

+ 11 - 0
recommend-model-produce/src/main/scala/com/tzld/piaoquan/recommend/model/pred_recsys_61_xgb_nor_hdfsfile_20241209.scala

@@ -89,9 +89,11 @@ object pred_recsys_61_xgb_nor_hdfsfile_20241209 {
       .setMetricName("mae")
     val rmse = rmseEvaluator.evaluate(predictions.select("label", "prediction"))
     val mae = maeEvaluator.evaluate(predictions.select("label", "prediction"))
+    val mape = calMAPE(predictions.select("label", "prediction").rdd)
     val rmsle = calRMSLE(predictions.select("label", "prediction").rdd)
     printf("recsys nor:rmse: %.6f\n", rmse)
     printf("recsys nor:mae: %.6f\n", mae)
+    printf("recsys nor:mape: %.6f\n", mape)
     printf("recsys nor:rmsle: %.6f\n", rmsle)
 
     println("---------------------------------\n")
@@ -117,6 +119,15 @@ object pred_recsys_61_xgb_nor_hdfsfile_20241209 {
     })
   }
 
+  def calMAPE(evalRdd: RDD[Row]): Double = {
+    val apeRdd = evalRdd.map(raw => {
+      val label = raw.get(0).toString.toDouble
+      val pred = raw.get(1).toString.toDouble
+      math.abs(label - pred) / label
+    })
+    apeRdd.sum() / apeRdd.count()
+  }
+
   def calRMSLE(evalRdd: RDD[Row]): Double = {
     val sleRdd = evalRdd.map(raw => {
       val label = raw.get(0).toString.toDouble