翻译自官方文档
如有问题,欢迎留言指正,转载请注明出处。
基本统计
目录
- 相关性
- 假设检验
相关性
计算两个数据系列之间的相关性是统计学中的常见操作。在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" 这个位置有完整代码。
翻译自官方文档
如有问题,欢迎留言指正,转载请注明出处。