Spark MLlib學習(1)--基本統計
Correlation
支援的方法有Pearson相關係數和spearman相關係數。
Pearson相關係數
皮爾遜相關係數用來衡量定距變數的線性關係,取值範圍是-1到1,接近0的變數相關性小,接近1或-1的變數相關性大。
spearman相關係數
斯皮爾曼相關性係數,通常也叫斯皮爾曼秩相關係數。“秩”,可以理解成就是一種順序或者排序,那麼它就是根據原始資料的排序位置進行求解,這種表徵形式就沒有了求皮爾森相關性係數時那些限制。下面來看一下它的計算公式:
計算過程就是:首先對兩個變數(X, Y)的資料進行排序,然後記下排序以後的位置(, ),(, )的值就稱為秩次,秩次的差值就是上面公式中的,n就是變數中資料的個數,最後帶入公式就可求解結果。
下面為MLlib程式碼,用來求向量的皮爾遜相關係數和斯皮爾曼相關性係數:
import org.apache.spark.ml.linalg.{Matrix, Vectors}
import org.apache.spark.ml.stat.Correlation
import org.apache.spark.sql.Row
val data = Seq(
//生成稀疏向量,該向量個4個值,第一個值為1.0,最後一個值為-2.0,即向量為(1.0, 0.0, 0.0,-2.0)
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")
//Pearson相關係數
val Row(coeff1: Matrix) = Correlation.corr(df, "features").head
println(s"Pearson correlation matrix:\n $coeff1")
//Spearman相關係數
val Row(coeff2: Matrix) = Correlation.corr(df, "features", "spearman").head
println(s"Spearman correlation matrix:\n $coeff2")
Hypothesis testing
現在支援的方法有皮爾遜的卡方檢驗。
“皮爾森卡方檢驗”可用於兩種情境的變項比較:適配度檢驗,和獨立性檢驗
-
“適配度檢驗”驗證一組觀察值的次數分配是否異於理論上的分配。
-
“獨立性檢驗”驗證從兩個變數抽出的配對觀察值組是否互相獨立(例如:每次都從A國和B國各抽一個人,看他們的反應是否與國籍無關)。
下面的例子用於計算features和label的獨立性:
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
//卡方分配右尾機率p,如果p值很小,說明觀察值與理論值偏離程度太大,應當拒絕無效假設
println(s"pValues = ${chi.getAs[Vector](0)}")
//自由度df
println(s"degreesOfFreedom ${chi.getSeq[Int](1).mkString("[", ",", "]")}")
//統計值
println(s"statistics ${chi.getAs[Vector](2)}")
相關文章
- Spark MLlib 入門學習筆記 - 程式設計環境配置Spark筆記程式設計
- 統計學習一:1.概論:基本概念
- Spark2學習1之基本環境搭建(win)問題Spark
- Spark MLlib FPGrowth演算法Spark演算法
- CSS學習1—-基本CSS
- spark學習之-----spark程式設計模型Spark程式設計模型
- AI開源專案 - Spark MLlibAISpark
- 1.Spark學習(Python版本):Spark安裝SparkPython
- 機器學習庫Spark MLlib簡介與教程機器學習Spark
- Spark MLlib 核心基礎:向量 And 矩陣Spark矩陣
- Python學習記錄_基本統計值計算Python
- Spark MLlib SVM 文字分類器實現Spark文字分類
- Spark MLlib NaiveBayes 貝葉斯分類器SparkAI
- 【統計學習方法|筆記】第1章 統計學習方法理論筆記
- spark 學習Spark
- 從Spark MLlib到美圖機器學習框架實踐Spark機器學習框架
- 如何利用Spark MLlib進行個性推薦?Spark
- spark學習筆記--Spark SQLSpark筆記SQL
- 學習筆記1熱力學與統計物理筆記
- spark學習筆記-- Spark StreamingSpark筆記
- spark學習筆記--進階程式設計Spark筆記程式設計
- Spark學習進度-Spark環境搭建&Spark shellSpark
- Spark學習——排序ShuffleSpark排序
- spark學習筆記Spark筆記
- spark 學習總結Spark
- Spark入門學習Spark
- Spark 學習筆記Spark筆記
- Spark學習筆記(三)-Spark StreamingSpark筆記
- vue學習筆記1-基本知識Vue筆記
- 10 -1學習計劃
- 使用Spark MLlib訓練和提供自然語言處理模型Spark自然語言處理模型
- 機器學習講座,如何利用Spark MLlib進行個性推薦?機器學習Spark
- spark學習筆記--叢集執行SparkSpark筆記
- Spark Streaming學習——DStreamSpark
- Spark學習——問題排查Spark
- spark學習筆記--RDDSpark筆記
- C#程式設計學習(04):基本操作學習總結C#程式設計
- 學習 python logging(1): 基本用法Python