MLlib Statistics 是统计模块。包括:汇总统计、相关系数分析、分层抽样、假设检验、随机数据生成等。
列统计汇总
Statistics的colStats函数是列统计方法,该方法可以计算每列最大值、最小值、平均值、方差值、L1范数、L2范数。
val dataPath = "E:\\Scala_TestData\\sample_stat.txt"
val rdd = sc.textFile(dataPath).map(_.split(" ")).map(d=>d.map(d=>d.toDouble))
val denseRdd = rdd.map(d=>Vectors.dense(d))
val stats = Statistics.colStats(denseRdd)
println(stats.max)
println(stats.min)
println(stats.mean)
println(stats.variance)
println(stats.normL1)
println(stats.normL2)
[12.0,7.0,6.0,100.0,23.0]
[1.0,2.0,1.0,4.0,3.0]
[5.25,4.25,3.0,29.5,9.75]
[24.917,4.92,4.7,2211.0,82.25]
[21.0,17.0,12.0,118.0,39.0]
[13.6,9.3,7.07,100.6,25.04]
相关系数
Pearson,Spearman、Cosine相似度、欧氏距离的平方,都可以用来描述两个向量的相关性。
欧氏距离
计算欧氏距离是衡量两个向量间相似度的常见方法。如果这个“距离”比较小说明这两个向量比较相似。
Pearson
衡量向量相似度的一种方法。输出范围为-1到+1, 0代表无相关性,负值为负相关,正值为正相关。
Cosine相似度
输出范围和Pearson相关性系数一致,含义也相似。
Spearman相关系统也用来表达两个变量的相关性,但是它没有Pearson对变量的分布要求那么严格,另外Spearman相关系数可以更好地测度变量的排序关系。
val corr1 = Statistics.corr(datardd,"pearson")
val corr2 = Statistics.corr(datardd,"spearman")