首页 > 代码库 > 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(二)基本统计