Spark MLlib数据类型和数理统计

本文介绍了Spark MLlib中的基本数据类型,包括本地向量集、向量标签、本地矩阵和分布式矩阵,并提供了相关代码示例。此外,还详细讲解了Spark的数理统计功能,如基本统计量、相关系数计算和假设检验,同时展示了如何进行分层抽样和Chi-Square测试。
摘要由CSDN通过智能技术生成

一、 数据类型
Spark MLlib基本数据类型包括:
1) 本地向量集,主要向spark提供一组可操作的数据集。向量包括稀疏型数据集(spares)和密集型数据集(dense)。
代码示例如下:

    val vd:Vector = Vectors.dense(2,0,6)     //密集型
    val vs:Vector = Vectors.sparse(4,Array(0,1,2,3),Array(9,5,2,7))

2) 向量标签,让用户能够分类不同的数据集合。
代码示例如下:

 //使用1)中的向量集
 val pos = LabeledPoint(1,vd)
 println(pos.features)
 println(pos.label)
 
 val neg = LabeledPoint(2,vs)
 println(neg.features)
 println(neg.label)

3) 本地矩阵,将数据集合以矩阵的形式存储在本地计算机中。
代码示例如下:

val mx = Matrices.dese(2,3,Array(1,2,3,4,5,6))

4)分布式矩阵,将数据集合以分布式矩阵的形式存储在分布式计算机上。MLlib提供的分布式矩阵主要有行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵。
行矩阵:val rm=new RowMatrix(rdd).
带有行索引的行矩阵:

   val rdd= sc.textFile("/home/hadoop/data/b.txt").map(_.split(' ').map(_.toDouble))
   .map(line => Vectors.dense(line)).map((vd)=>new IndexedRow(vd.size,vd)).
   val irm=new IndexRowMatrix(rdd). 
   println(irm.getClass).
    println(irm.rows.foreach(println)). 

IndexedRowMatrix还有转换成其他矩阵的功能,toRowMatrix转化为行矩阵,toCoordinateMatrix转化为坐标矩阵,toBlockMatrix转化为块矩阵。
坐标矩阵

	val rdd= sc.textFile("/home/hadoop/data/b.txt").map(_.split(' ').map(_.toDouble))
	.map(vue => (vue(0).toLong,vue(1).toLong,vue(2))).map(vue2 => new MatrixEntry(vue2 _1,vue2 _2,vue2 _3)).  
	val crm = new CoordinateMatrix(rdd). 
	println(crm.entries.foreach(println))     

三个分布式矩阵功能参数上依次增加,高级可以向低级转换。
二、 数理统计
1) 基本统计量包括:colStats,以列为基础计算统计量的基本数据。chiSqTest,对数据集内的数据进行皮尔逊距离计算,根据参量的不同,返回值格式有差异。corr,对两个数据集进行相关系数计算。
2) 统计量基本方法:count,行内数据个数。Max,最大数值单位。Mean,均值。normL1,欧几里得距离。normL2,曼哈顿距离。numNonzeros,不包含0的个数。variance,标准差。

代码示例:

import org.apache.spark.mllib.stat.Statistics
val summary = Statistics.colStats(rdd)
println(summary.normL1)
println(summary.normL2)
Statistics.corr(rdd,"spearman")

//分层抽样
Val fractions:Map[String,Double] = Map(“aa” -> 2)
Val approxSample = data.sampleByKey(withReplacement = false,fractions,0)
approxSample.foreach(println)

//假设检验
val mtx = Matrices.dense(2,3,Array(1,2,3,4,5,6))
Val mtxResult = Statistics.chiSqTest(mtx)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值