MLlib
是 Spark
的机器学习 (ML) 库。其目标是使实用的机器学习变得可扩展且简单。在高级别上,它提供了各种工具::
ML 算法:常见的学习算法,如分类、回归、聚类和协作筛选
实现:特征提取、变换、尺寸减小和选择
管道:用于构建、评估和调整 ML 管道的工具
持久性:保存和加载算法、模型和管道
实用工具:线性代数、统计、数据处理等。
相关
计算两个数据系列之间的相关性
是统计学中的常见操作。
import org.apache.spark.ml.linalg.{Matrix, Vectors}
import org.apache.spark.ml.stat.Correlation
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
object MLTest {
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession.builder().master("local").getOrCreate()
import spark.implicits._
val data = Seq(
//使用无序(索引,值)对创建稀疏向量。
Vectors.sparse(4, Seq((0, 1.0), (3, -2.0))),
//根据其值创建密集向量。
Vectors.dense(4.0, 5.0, 0.0, 3.0),
Vectors.dense(6.0, 7.0, 0.0, 8.0),
Vectors.sparse(4, Seq((0, 9.0), (3, 1.0)))
)
val df = data.map(Tuple1.apply).toDF("features")
//计算向量输入数据集的皮尔逊相关矩阵。
//Returns the first row.
val Row(coeff1: Matrix) = Correlation.corr(df, "features").head
println(s"Pearson correlation matrix:\n $coeff1")
val Row(coeff2: Matrix) = Correlation.corr(df, "features", "spearman").head
println(s"Spearman correlation matrix:\n $coeff2")
}
}
Spearman correlation matrix:
1.0 0.10540925533894532 NaN 0.40000000000000174
0.10540925533894532 1.0 NaN 0.9486832980505141
NaN NaN 1.0 NaN
0.40000000000000174 0.9486832980505141 NaN 1.0