首页 > 代码库 > Spark-Mllib(二)基本统计

Spark-Mllib(二)基本统计

转自 :http://www.cnblogs.com/tuitui1989/p/5337968.html

 

一.基本统计量

统计向量的长度,最大值,最小值,非0个数,模1和模2,方差等

import org.apache.spark.mllib.linalg.{Vector,Vectors}

import org.apache.spark.mllib.stat.{MultivariateStatisticalSummary, Statistics}

val data=http://www.mamicode.com/sc.parallelize(1 to 100,2)

val obs=data.map(x=>Vectors.dense(x))

 val summary=Statistics.colStats(obs)

summary.mean

summary.max

 

二.相关系数

import org.apache.spark.SparkContext

import org.apache.spark.mllib.linalg._

import org.apache.spark.mllib.stat.Statistics

 

val x=sc.parallelize(1 to 3,2).map(_.toDouble)

val y=sc.parallelize(1 to 3,2).map(_.toDouble)

val correlation: Double = Statistics.corr(x, y, "pearson")

 

val data=http://www.mamicode.com/sc.textFile("coo1").map(_.split(‘,‘)).map(_.map(_.toDouble)).map(x=>Vectors.dense(x))

val correlMatrix: Matrix = Statistics.corr(data, "pearson")

 

三.分成抽样

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

import org.apache.spark.rdd.PairRDDFunctions

val info=sc.parallelize(List((‘a‘,2),(‘a‘,3),(‘b‘,1),(‘b‘,3),(‘c‘,10),(‘d‘,100)))

val ff=Map(‘a‘->0.5,‘b‘->1.0)

val infosample=info.sampleByKey(withReplacement = false, fractions=ff)

 

 

四.假设检验

假设检验是用于检测结果是否统计显著,事件结果是否偶然,mllib目前 提供pearson卡方检验用于计算拟合优度检验和独立检验,

前者需要向量作为输入,后者需要矩阵作为输入

卡方拟合优度检验,一般用于检验样本是否符合某分布,理论频数与实际频数的偏差. 如果分布的参数未知,可考虑用mle

卡方独立性检验,一般针对列链表的形式,理论频数与实际频数的偏差。

 

五.kernel估计

kernal理论基础,参考Walter Zucchini的文章,主要介绍了几部分:

a.f(x)的估计

b.bandwidth的大小对f(x)估计的影响

c.w(t,h)与kernel函数的关系,w(t,h)=1/h * k(t/h)

d.最佳窗宽的选择,根据MISE最小化 [1/n*y(K)/b(f)]^(1/5),其中y(K)=j2*k2^-2

e.最佳kernel:Epanechnikov kernel 

f.利用样本选择最佳窗框

 

Spark-Mllib(二)基本统计