Spark MLib 数据类型

1.  MLlib

Apache Spark's scalable machine learning library, with APIs in Java, Scala and Python.

2.   数据类型

本地向量,标注点,本地矩阵,分布式矩阵

3. 本地向量 Local Vector

  • 稠密向量 dense        一个double数组,例如 (1.0, 0.0, 0.0, 0.0, 3.0)
  • 稀疏向量 sparse       两个并行的数组(indices和values),例如 (5, [0, 4], [1.0, 3.0]),其中5表示向量元素的个数,[0,4] 是indices,[1.0,3.0]是values

基类是Vector,  org.apache.spark.mllib.linalg.vector引入

import org.apache.spark.mllib.linalg.{Vector, Vectors}
val dv: Vector = Vectors.dense(1.0, 0.0, 3.0)                        // 创建一个dense vector (1.0, 0.0, 3.0).
val sv1: Vector = Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0))   // 创建一个sparse vector (1.0, 0.0, 3.0).
val sv2: Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0)))        // 等同于sv2

4. 标注点(Labeled Point)

用于有监督学习的训练样本称为标注点。

  • 一个标注点就是一个本地向量(或稠密或稀疏),这个向量和一个标签或者响应相关联。
  • 我们用一个double存储标签,这样我们就可以在回归和分类中使用标注点。
  • 对于二分类,一个标签可能是0或者是1;对于多分类,一个标签可能代表从0开始的类别索引

样本类是LabeledPoint, org.apache.spark.mllib.regression.LabeledPoint 引入。

import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPointval pos = LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0))  // a positive label and a dense feature vector.
val neg = LabeledPoint(0.0, Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)))  // a negative label and a sparse feature vector.

5. 本地矩阵(Local Matrix)

  • 稠密矩阵    按列顺序存储,用一个数组,加上(列,行) 表示数组大小。
  • 稀疏矩阵    非零条目值保存为压缩稀疏列 CSCCompressed Sparse Column)格式,这种格式也是以列顺序存储

例:   9.0    0.0

( 0.0    8.0)

0.0    6.0

稠密矩阵可以表示为,[3, 2, (9.0 , 0.0, 0.0, 0.0, 8.0, 6.0) ]  其中3为

稀疏矩阵  ??不懂

基类是Matrix, 可以导入 org.apache.spark.mllib.linalg.Matrices

import org.apache.spark.mllib.linalg.{Matrix,Matrices}val dm: Matrix=Matrices.dense(3,2,Array(9.0,0.0,0.0,0.0,8.0,6.0)              // dense Matrix
val sm: Matrix=Matrices.sparse(3,2,Array(0,1,3),Array(0,2,1),Array(9,8,6)) //sparse Matrix

6. 分布式矩阵 Distributed Matrix

一个分布式矩阵拥有long类型的行和列索引,以及double类型的值,分布式的存储在一个或多个RDD

已经实现了3种分布式矩阵:

1)  RowMatrix

  • 是一个面向行的分布式矩阵,它没有有意义的行索引。行保存为一个RDD,每一行都是一个本地向量。
  • 可以通过  org.apache.spark.mllib.linalg.distributed.RowMatrix 引入。
  • 通过RDD[Vector]实例创建

2) IndexedRowMatrix

  • 和RowMatrix类似,它拥有行索引,行索引可以用于识别行和进行join操作
  • org.apache.spark.mllib.linalg.distributed.{IndexedRow, IndexedRowMatrix, RowMatrix}
  • 可以通过RDD[IndexedRow]实例创建
  • IndexedRowMatrix可以通过去掉它的行索引,转换成RowMatrix

3) CoordinateMatrix  

  • 一个分布式矩阵,它使用COO格式存储 (COO是啥)
  • 条目保存为一个RDD。每一个条目是一个(i: Long, j: Long, value: Double)格式的元组,行索引,列索引,value 条目值。
  • 应该仅仅在矩阵维度很大并且矩阵非常稀疏的情况下使用
  • org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, MatrixEntry}
  • 通过RDD[MatrixEntry]实例创建

4) BlockMatrix

  • 每个块保存为一个RDD
  • 与CoordinateMatrix类似,是一个((Int, Int), Matrix)类型的元组,其中(Int, Int)代表块的索引,Matrix代表子矩阵。
  • BlockMatrix支持诸如addmultiply等方法。BlockMatrix还有一个帮助方法validate,用来判断一个BlockMatrix是否正确的创建。
  • 调用toBlockMatrix从一个IndexedRowMatrix或者CoordinateMatrix创建一个BlockMatrix。 默认大小为 1024 * 1024 
  • org.apache.spark.mllib.linalg.distributed.BlockMatrix

  

posted on 2016-05-28 17:51 Suckseedeva 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/skyEva/p/5537981.html

Spark MLib 数据类型相关推荐

  1. fpgrowth算法实战 mlib_【spark】41.Spark Mlib:FPGrowth算法

    简介 FP-Growth算法是韩嘉炜等人在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-tree),但仍保留项集关联信息. 在算法中使用了一种称为 ...

  2. Spark Mlib TFIDF源码详读 笔记

    2019独角兽企业重金招聘Python工程师标准>>> 在提取文本特征时,经常用到TF-IDF算法.Spark Mlib实现了该算法.下面是Spark Mlib中,TF_IDF算法调 ...

  3. 利用Spark MLIB实现电影推荐

    利用Spark MLIB实现电影推荐 源码及数据集:https://github.com/luo948521848/BigData Spark 机器学习库MLLib MLlib是Spark的机器学习( ...

  4. Spark SQL数据类型

    Spark SQL数据类型 数字类型 ByteType:代表一个字节的整数.范围是-128到127 ShortType:代表两个字节的整数.范围是-32768到32767 IntegerType:代表 ...

  5. spark mlib坐标矩阵(Coordinate Matrix)

    坐标矩阵CoordinateMatrix是一个基于矩阵项构成的RDD的分布式矩阵.每一个矩阵项MatrixEntry都是一个三元组:(i: Long, j: Long, value: Double), ...

  6. spark mlib行索引矩阵

    索引行矩阵IndexedRowMatrix与RowMatrix相似,但它的每一行都带有一个有意义的行索引值,这个索引值可以被用来识别不同行,或是进行诸如join之类的操作. 其数据存储在一个由Inde ...

  7. spark mlib行矩阵(RowMatrix)入门

    行矩阵RowMatrix是最基础的分布式矩阵类型. 每行是一个本地向量,行索引无实际意义(即无法直接使用). 数据存储在一个由行组成的RDD中,其中每一行都使用一个本地向量来进行存储. 由于行是通过本 ...

  8. Spark MLlib数据类型

    MLlib支持几种数据类型:本地向量(local vectors),和存储在本地或者基于RDD的分布式矩阵(matrices).底层的线性代数转换操作是基于Breeze和jblas实现的.在MLlib ...

  9. spark mlib入门

    MLlib 是 Spark 的机器学习 (ML) 库.其目标是使实用的机器学习变得可扩展且简单.在高级别上,它提供了各种工具:: ML 算法:常见的学习算法,如分类.回归.聚类和协作筛选 实现:特征提 ...

最新文章

  1. pr预设的卷及内核锐化是什么_看完这一篇,彻底搞懂锐化怎么用!
  2. 安卓高手之路之ClassLoader(三)
  3. 【Object类、日期、StringBuilder】
  4. 得到的 飞鸽 传书结果就是int * pointer;
  5. AndroidStudio 编译异常java.lang.OutOfMemoryError: GC overhead limit exceeded
  6. CiTRIX XenServer 6.5安装体验
  7. 按钮插件和按钮状态切换
  8. 实验吧-PHP大法-eregi()函数
  9. Windows XP \Windows 2003启动过程的学习及故障分析处理(六D)
  10. 学计算机应用的必懂知识,学习计算机应用基础心得体会
  11. 八月未央,梦落泸沽。
  12. java读txt文件乱码_java读取txt文件时出现中文乱码怎么解决
  13. 关于LDO和DC-DC,看这一篇就够了!
  14. OneNote中英文格式不同,OneNote无法修改英文字体,OneNote默认英文字体为Calibri无法修改的问题。
  15. IDEA 报错 Cannot connect to the Maven process. If the problem persists, check the jdk.
  16. 无法连接虚拟设备sata的原因
  17. 2022年全球市场MEMS惯性测量单元(IMU)总体规模、主要生产商、主要地区、产品和应用细分研究报告
  18. qcom 8953 usb hub device descriptor read/64 error -71
  19. Oracle表中添加字段及描述
  20. python--支付密码的验证、模拟qq账号登陆、商品价格竞猜(radom随机数的使用)、根据星座产看运势​

热门文章

  1. 【Scala】Scala中特殊函数的使用(代码)
  2. vue比php的优势,vue.js的优势是什么
  3. tmap | R语言中专门绘制地图的工具包
  4. python float精度问题_Python之☞float浮点数精度问题
  5. php form表单验证,Validform表单验证总结篇
  6. 金融统计分析与挖掘实战3.1-3.2
  7. 下面的 3 条指令执行后, cpu 几次修改 IP? 都是在什么时候? 最后 IP 中的值是多少?
  8. python程序设计基础第三版_Python程序设计(第三版)PPT及源码
  9. bigru参数计算_[数据挖掘]华中科技大学 李黎 周达明:基于CNN-BiGRU模型的操作票自动化校验方法...
  10. android统计库,android jacoco 统计多模块