Spark ML基本算法【ChiSquareTest卡方檢驗】

一.簡介

假設檢驗是一種強大的統計工具,可用來確定結果是否具有統計學意義,以及該結果是否偶然發生。spark.ml當前支持Pearson的卡方測試獨立性。

ChiSquareTest針對標籤上的每個功能進行Pearson的獨立性測試。對於每個要素,(要素,標籤)對將轉換爲列聯矩陣,針對該列矩陣計算卡方統計量。所有標籤和特徵值必須是分類的。

二.代碼實戰

package spark2.ml

import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.linalg.{Vectors}
import org.apache.spark.ml.stat.ChiSquareTest
import org.apache.spark.sql.SparkSession

/**
  * Created by Administrator on 2020/6/28.
  */
object MLChiSquareTest {
  /**
    * 設置日誌級別
    */
  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(
      (0.0, Vectors.dense(1.0, 1.0, 1.0)),
      (0.0, Vectors.dense(1.0, 1.0, 2.0)),
      (0.0, Vectors.dense(1.0, 1.0, 3.0)),
      (1.0, Vectors.dense(1.0, 3.0, 4.0)),
      (1.0, Vectors.dense(1.0, 3.0, 5.0)),
      (1.0, Vectors.dense(1.0, 3.0, 6.0))
    )
    val df = data.toDF("label", "features")
    val chi = ChiSquareTest.test(df, "features", "label")
    chi.show(false)
  }
}

更多源碼:Spark Github

三.執行結果及分析

在這裏插入圖片描述

  • pValues:評測值,越大【接近1】代表該特徵列越無意義,對標籤的區分作用越低,反之,越小【接近0】越有區分價值。
  • degreeOfFreedom:自由度,degreeOfFreedom+1等價於該特徵值的種類。
  • statistics:處理邏輯比較複雜,可以認爲是越大分類價值越高,越小分類價值越低。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章