背景
目前广泛向通过算法模型来实现
spark能力
Spearman系数、pearson系数计算方法测试
Spark提供了常用机器学习算法的实现, 封装在spark.ml和spark.mllib中,spark.mllib是基于RDD的机器学习库, spark.ml是基于DataFrame的机器学习库。相对于RDD, DataFrame拥有更丰富的操作API, 可以进行更灵活的操作 目前, spark.ml已经进入维护状态, 不再添加新特性。
Spark ml中,提供了spearman、pearson系数计算的能力。测试案例:
package com.qm.spark.job
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.ml.linalg.{DenseVector, Vector}
import org.apache.spark.ml.stat.Correlation
import org.apache.spark.sql.expressions.UserDefinedFunction
import org.apache.spark.sql.functions.udf
import org.apache.spark.mllib.stat.Statistics
import org.apache.spark.rdd.RDD
/**
* Description:
* Date: 2023/8/25
*/
object SpearmanCnt {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("ExampleApp").setMaster("local")
val sc = new SparkContext(conf)
val arr1 = List(2.0, 1.0, 1.0)
val arr2 = List(8.0, 2.0, 3.0)
val rdd1 = sc.parallelize(arr1)
val rdd2 = sc.parallelize(arr2)
val d = Statistics.corr(rdd1, rdd2, "spearman")
val d2 = Statistics.corr(rdd1, rdd2, "pearson")
println("spearman 值:" + d)
println("pearson 值:" + d2)
}
}
运行结果:
通过截图,我们可以看到通过Statistics.corr的使用是可以实现spearman系数、pearson系数的计算。