Spark MLlib Statistics统计

1、Spark MLlib Statistics统计

Spark Mllib
统计模块代码结构如下:

1.1
列统计汇总

计算每列最大值、最小值、平均值、方差值、L1范数、L2范数。

//读取数据,转换成RDD[Vector]类型

val
data_path =
"/home/jb-huangmeiling/sample_stat.txt"

val
data =
sc.textFile(data_path).map(_.split("\t")).map(f
=> f.map(f => f.toDouble))

val
data1 =
data.map(f => Vectors.dense(f))

//计算每列最大值、最小值、平均值、方差值、L1范数、L2范数

val
stat1 = Statistics.colStats(data1)

stat1.max

stat1.min

stat1.mean

stat1.variance

stat1.normL1

stat1.normL2

执行结果:

数据


1


2


3


4


5


6


7


1


5


9


3


5


6


3


1


3


1


1


5


6

scala> data1.collect

res19: Array[org.apache.spark.mllib.linalg.Vector] = Array([1.0,2.0,3.0,4.0,5.0], [6.0,7.0,1.0,5.0,9.0],
[3.0,5.0,6.0,3.0,1.0], [3.0,1.0,1.0,5.0,6.0])

scala>    
stat1.max

res20: org.apache.spark.mllib.linalg.Vector = [6.0,7.0,6.0,5.0,9.0]

scala>    
stat1.min

res21: org.apache.spark.mllib.linalg.Vector = [1.0,1.0,1.0,3.0,1.0]

scala>    
stat1.mean

res22: org.apache.spark.mllib.linalg.Vector = [3.25,3.75,2.75,4.25,5.25]

scala>    
stat1.variance

res23: org.apache.spark.mllib.linalg.Vector = [4.25,7.583333333333333,5.583333333333333,0.9166666666666666,10.916666666666666]

scala>    
stat1.normL1

res24: org.apache.spark.mllib.linalg.Vector = [13.0,15.0,11.0,17.0,21.0]

scala>    
stat1.normL2

res25: org.apache.spark.mllib.linalg.Vector = [7.416198487095663,8.888194417315589,6.855654600401044,8.660254037844387,11.958260743101398]

1.2
相关系数

Pearson相关系数表达的是两个数值变量的线性相关性,
它一般适用于正态分布。其取值范围是[-1, 1], 当取值为0表示不相关,取值为(0~-1]表示负相关,取值为(0, 1]表示正相关。

Spearman相关系数也用来表达两个变量的相关性,但是它没有Pearson相关系数对变量的分布要求那么严格,另外Spearman相关系数可以更好地用于测度变量的排序关系。其计算公式为:

//计算pearson系数、spearman相关系数

val
corr1 = Statistics.corr(data1,
"pearson")

val
corr2 = Statistics.corr(data1,
"spearman")

val
x1 =
sc.parallelize(Array(1.0,
2.0,
3.0,
4.0)
)

val
y1 =
sc.parallelize(Array(5.0,
6.0,
6.0,
6.0)
)

val
corr3 = Statistics.corr(x1,
y1,
"pearson")

scala> corr1

res6: org.apache.spark.mllib.linalg.Matrix =

1.0                  
0.7779829610026362    -0.39346431156047523 
... (5 total)

0.7779829610026362   
1.0                   0.14087521363240252  
...

-0.39346431156047523 
0.14087521363240252   1.0                  
...

0.4644203640128242   
-0.09482093118615205  -0.9945577827230707  
...

0.5750122832421579   
0.19233705001984078   -0.9286374704669208  
...

scala> corr2

res7: org.apache.spark.mllib.linalg.Matrix =

1.0                 
0.632455532033675     -0.5000000000000001 
... (5 total)

0.632455532033675   
1.0                   0.10540925533894883 
...

-0.5000000000000001 
0.10540925533894883   1.0                 
...

0.5000000000000001  
-0.10540925533894883  -1.0000000000000002 
...

0.6324555320336723  
0.20000000000000429   -0.9486832980505085 
...

scala> corr3

res8: Double = 0.7745966692414775

1.3
假设检验

MLlib当前支持用于判断拟合度或者独立性的Pearson卡方(chi-squared
( χ2) )检验。不同的输入类型决定了是做拟合度检验还是独立性检验。拟合度检验要求输入为Vector,
独立性检验要求输入是Matrix。

//卡方检验

val
v1 = Vectors.dense(43.0,
9.0)

val
v2 = Vectors.dense(44.0,
4.0)

val
c1 = Statistics.chiSqTest(v1,
v2)

执行结果:

c1: org.apache.spark.mllib.stat.test.ChiSqTestResult =

Chi squared test summary:

method: pearson

degrees of freedom = 1

statistic = 5.482517482517483

pValue = 0.01920757707591003

Strong presumption against null hypothesis: observed follows the same distribution as expected..

结果返回:统计量:pearson、自由度:1、值:5.48、概率:0.019。

时间: 2024-11-05 18:43:59

Spark MLlib Statistics统计的相关文章

Spark MLlib机器学习算法、源码及实战讲解pdf电子版下载

Spark MLlib机器学习算法.源码及实战讲解pdf电子版下载 链接:https://pan.baidu.com/s/1ruX9inG5ttOe_5lhpK_LQg 提取码:idcb <Spark MLlib机器学习:算法.源码及实战详解>书中讲解由浅入深慢慢深入,解析讲解了MLlib的底层原理:数据操作及矩阵向量计算操作,该部分是MLlib实现的基础:并对此延伸机器学习的算法,循序渐进的讲解其中的原理,是读者一点一点的理解和掌握书中的知识. 目录 · · · · · · 第一部分 Spa

spark MLLib的基础统计部分学习

参考学习链接:http://www.itnose.net/detail/6269425.html 机器学习相关算法,建议初学者去看看斯坦福的机器学习课程视频:http://open.163.com/special/opencourse/machinelearning.html(已经被翻译了) 所有文中示例见:http://spark.apache.org/docs/latest/mllib-statistics.html 统计工具(1)摘要统计我们通过统计中可用的colStats函数提供RDD

Spark MLlib知识点整理

MLlib的设计原理:把数据以RDD的形式表示,然后在分布式数据集上调用各种算法.MLlib就是RDD上一系列可供调用的函数的集合. 操作步骤: 1.用字符串RDD来表示信息. 2.运行MLlib中的一个特征提取算法来吧文本数据转换为数值的特征.给操作会返回一个向量RDD. 3.对向量RDD调用分类算法,返回一个模型对象,可以使用该对象对新的数据点进行分类. 4.使用MLlib的评估函数在测试数据集上评估模型. 机器学习基础: 机器学习算法尝试根据 训练数据 使得表示算法行为的数学目标最大化,并

Spark MLlib LDA 源代码解析

1.Spark MLlib LDA源代码解析 http://blog.csdn.net/sunbow0 Spark MLlib LDA 应该算是比較难理解的,当中涉及到大量的概率与统计的相关知识,并且还涉及到了Spark GraphX图计算方面的知识.要想明确当中的原理得要下一番功夫. LDA源代码解析前的基础知识: 1)LDA主题模型的理论知识 參照:LDA数学八卦 2)SparkGraphX 基础知识 http://blog.csdn.net/sunbow0/article/details/

Spark MLib 基本统计汇总

1.  概括统计 summary statistics MLlib支持RDD[Vector]列式的概括统计,它通过调用 Statistics 的 colStats方法实现. colStats返回一个 MultivariateStatisticalSummary 对象,这个对象包含列式的最大值.最小值.均值.方差等等. import org.apache.spark.mllib.linalg.Vector import org.apache.spark.mllib.stat.{Multivaria

14.spark mllib之快速入门

简介 ??MLlib是Spark提供提供机器学习的库,专为在集群上并行运行的情况而设计.MLlib包含很多机器学习算法,可在Spark支持的所有编程语言中使用. ??MLlib设计理念是将数据以RDD的形式表示,然后在分布式数据集上调用各种算法.其实,MLlib就是RDD上一系列可供调用的函数的集合. 数据类型 ??MLlib包含一些特有的数据类型,位于org.apache.spark.mllib包(Java/Scala)或pyspark.mllib(Python)中.主要的几个类有: Vect

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,

Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”. l“机器学习是对能通过经验自动改进的计算机算法的研究”. l“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准.” 一种经常引用的英文定义是:A computer program is said

协同过滤算法 R/mapreduce/spark mllib多语言实现

用户电影评分数据集下载 http://grouplens.org/datasets/movielens/ 1) Item-Based,非个性化的,每个人看到的都一样 2) User-Based,个性化的,每个人看到的不一样 对用户的行为分析得到用户的喜好后,可以根据用户的喜好计算相似用户和物品,然后可以基于相似用户或物品进行推荐.这就是协同过滤中的两个分支了,基于用户的和基于物品的协同过滤. 在计算用户之间的相似度时,是将一个用户对所有物品的偏好作为一个向量,而在计算物品之间的相似度时,是将所有