Spark ML基本算法【總結器】

一.簡介

通過使用Summarizer提供矢量列【向量、矩陣】彙總統計Dataframe。可用的指標是按列的最大值,最小值,平均值,總和,方差,std和非零數,以及總數。

二.代碼實戰【以均值、方差爲例】

package spark2.ml

import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.linalg.{Vector, Vectors}
import org.apache.spark.sql.SparkSession
import org.apache.spark.ml.stat.Summarizer._
/**
 * Created by Administrator on 2020/7/3.
  */
object MLSummary {
  /**
    * 設置日誌級別
    */
  Logger.getLogger("org").setLevel(Level.WARN)
  def main(args: Array[String]) {
    val spark = SparkSession
      .builder
      .appName(s"${this.getClass.getSimpleName}")
      .config("spark.driver.maxResultSize", "2G")
      .master("local[2]")
      .getOrCreate()

    import spark.implicits._

    val data = Seq(
      (Vectors.dense(7.0, 3.0, 4.0), 1.0),
      (Vectors.dense(4.0, 6.0, 7.0), 2.0)
    )
    val df = data.toDF("features", "weight")

    /**
      * 帶權重的均值、方差計算
      */
    val (meanVal, varianceVal) = df.select(metrics("mean", "variance").summary($"features", $"weight").as("summary"))
      .select("summary.mean", "summary.variance")
      .as[(Vector, Vector)]
      .first()
    println(meanVal)
    println(varianceVal)

    /**
      * 不帶權重的均值、方差計算
      */
    val (meanVal2, varianceVal2) = df.select(mean($"features"), variance($"features"))
      .as[(Vector, Vector)]
      .first()
    println(meanVal2)
    println(varianceVal2)

    spark.stop()
  }
}

三.執行結果及分析

在這裏插入圖片描述
包括以下類型計算:

  • mean:包含係數均值的向量。
  • variance:包含係數方差的向量。
  • count總數:總數。
  • numNonzeros:數值類型向量最大非零個數。
  • max:最大值。
  • min:最小值。
  • normL2:每個係數的歐幾里得範數。
  • normL1:每個係數的L1範數(絕對值之和)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章