Spark MLlib机器学习开发指南(2) --基本统计

翻译自官方文档
如有问题,欢迎留言指正,转载请注明出处。

基本统计

目录
  • 相关性
  • 假设检验

相关性

计算两个数据系列之间的相关性是统计学中的常见操作。在spark.ml中,我们灵活的提供了在很多数据系列之间计算成对相关性的方法。支持相关性的方法是Pearson(皮尔逊)相关性和spearman相关性

import org.apache.spark.ml.linalg.{Matrix, Vectors}
import org.apache.spark.ml.stat.Correlation
import org.apache.spark.sql.Row

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")
val Row(coeff1: Matrix) = Correlation.corr(df, "features").head
println("Pearson correlation matrix:\n" + coeff1.toString)

val Row(coeff2: Matrix) = Correlation.corr(df, "features", "spearman").head
println("Spearman correlation matrix:\n" + coeff2.toString)

完整示例代码在Spark仓库的 "examples/src/main/scala/org/apache/spark/examples/ml/CorrelationExample.scala" 这个位置

假设检验

假设检验是统计学中强大的工具,用于确定结果是否具有统计学意义,无论该结果是否偶然发生。spark.ml目前支持Pearson的卡方(χ2)独立性测试。
卡方测试针对标签的每个特征进行Pearson独立测试。对于每个特征,特征标签对被转换成列联表(contingency matrix),以计算卡方统计量。所有标签和特征值必须是明确的。

有关API的详细信息,请参阅ChiSquareTest Scala文档。

import org.apache.spark.ml.linalg.{Vector, Vectors}
import org.apache.spark.ml.stat.ChiSquareTest

val data = Seq(
  (0.0, Vectors.dense(0.5, 10.0)),
  (0.0, Vectors.dense(1.5, 20.0)),
  (1.0, Vectors.dense(1.5, 30.0)),
  (0.0, Vectors.dense(3.5, 30.0)),
  (0.0, Vectors.dense(3.5, 40.0)),
  (1.0, Vectors.dense(3.5, 40.0))
)

val df = data.toDF("label", "features")
val chi = ChiSquareTest.test(df, "features", "label").head
println("pValues = " + chi.getAs[Vector](0))
println("degreesOfFreedom = " + chi.getSeq[Int](1).mkString("[", ",", "]"))
println("statistics = " + chi.getAs[Vector](2))

在Spark仓库中"examples/src/main/scala/org/apache/spark/examples/ml/ChiSquareTestExample.scala" 这个位置有完整代码。

翻译自官方文档
如有问题,欢迎留言指正,转载请注明出处。

你可能感兴趣的:(Spark MLlib机器学习开发指南(2) --基本统计)