|
@@ -84,9 +84,11 @@ object pred_recsys_61_xgb_nor_hdfsfile_20241209 {
|
|
|
.setPredictionCol("prediction")
|
|
|
.setMetricName("rmse")
|
|
|
val rmse = evaluator.evaluate(predictions.select("label", "prediction"))
|
|
|
+ val selfRmse = calRMSE(predictions.select("label", "prediction").rdd)
|
|
|
val rmsle = calRMSLE(predictions.select("label", "prediction").rdd)
|
|
|
- println("recsys rov:rmse:" + rmse)
|
|
|
- println("recsys nor: rmsle:" + rmsle)
|
|
|
+ printf("recsys nor:rmse: %.6f\n" + rmse)
|
|
|
+ printf("recsys nor:selfRmse:%.6f\n" + selfRmse)
|
|
|
+ printf("recsys nor:rmsle: %.6f\n" + rmsle)
|
|
|
|
|
|
println("---------------------------------\n")
|
|
|
println("---------------------------------\n")
|
|
@@ -111,12 +113,21 @@ object pred_recsys_61_xgb_nor_hdfsfile_20241209 {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ def calRMSE(evalRdd: RDD[Row]): Double = {
|
|
|
+ val sleRdd = evalRdd.map(raw => {
|
|
|
+ val label = raw.get(0).toString.toDouble
|
|
|
+ val pred = raw.get(1).toString.toDouble
|
|
|
+ math.pow(pred - label, 2)
|
|
|
+ })
|
|
|
+ math.sqrt(sleRdd.sum() / sleRdd.count())
|
|
|
+ }
|
|
|
+
|
|
|
def calRMSLE(evalRdd: RDD[Row]): Double = {
|
|
|
val sleRdd = evalRdd.map(raw => {
|
|
|
val label = raw.get(0).toString.toDouble
|
|
|
val pred = raw.get(1).toString.toDouble
|
|
|
math.pow(math.log(pred + 1) - math.log(label + 1), 2)
|
|
|
})
|
|
|
- sleRdd.sum() / sleRdd.count()
|
|
|
+ math.sqrt(sleRdd.sum() / sleRdd.count())
|
|
|
}
|
|
|
}
|