|
@@ -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
|