spark-mllib 密集向量和稀疏向量

MLlib支持局部向量和矩阵存储在单台服务器,也支持存储于一个或者多个rdd的分布式矩阵 。

局部向量和局部矩阵是用作公共接口的最简单的数据模型。 基本的线性代数运算由Breeze提供。

在监督学习中使用的训练示例在MLlib中称为“标记点”。

因此,向量和 矩阵,标记点是 spark-mllib基本的数据模型,也是学习sparl-mllib的基础。

局部向量

一个局部向量具有存储在单个机器上的integer整数类型的基于0的索引和double类型的多个值。MLlib支持两种类

类型的局部向量:密集(dense)向量和稀疏(sparse)向量。

一个密集向量基于一个double数组来表示其实体值,但是一个稀疏的向量基于两个并列的数组:索引数组和值数组。

例如,一个向量(1.0,0.0,3.0)可以用密集格式表示为[1.0,0.0,3.0] ;

稀疏格式表示为(3,[0,2],[1.0,3.0]),其中3是 向量的大小,向量的索引下标为0,1,2,索引为0的向量元素值为1.0,索引为0的向量元素值为3.0,而索引为1的向量元素值是默认值0.0。

由此可以看出,稀疏的向量初始化的值不包括默认值和不存在的值,可以节省一部分空间,数据集可以变小;而密集向量是把向量中每一个元素的值都初始化了,即是某个索引下标的值不存在,也用默认值代替,这样的好处是清晰明了,但是数据集会比较大。

局部向量的基本实现类是org.apache.spark.mllib.linalg.Vector,spark提供了2中实现:DenseVector and SparseVector。spark官方推荐使用org.apache.spark.mllib.linalg.Vectors类的工厂方法来创建局部向量。

参考 Vector.scala和Vectors.scala的docs文档了解详细的API介绍。

下面我使用spark 的mllib api 就定义一个密集向量:

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

// Create a dense vector (1.0, 0.0, 3.0).
//创建密集向量
val dv: Vector = Vectors.dense(1.0, 0.0, 3.0) // Create a sparse vector (1.0, 0.0, 3.0) by specifying its indices and values corresponding to nonzero entries.
//根据索引数组和值数据组创建稀疏向量
val sv1: Vector = Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0))
// Create a sparse vector (1.0, 0.0, 3.0) by specifying its nonzero entries.
//直接根据实体创建稀疏向量
val sv2: Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0)))

注意: scala默认引用的scala.collection.immutable.Vector,所以要显示的引用org.apache.spark.mllib.linalg.Vector,确保使用是MLlib的 Vector

最新文章

  1. ButterKnife--View注入框架的使用
  2. Ionic的跨域问题
  3. 隐藏UITableView多余的分割线
  4. flex布局模式简单概述
  5. 安装DotNetCore.1.0.0-VS2015Tools.Preview2失败解决方案
  6. 学习日记day7:代码结构规范
  7. mysql的top n查询
  8. php练习1——计算器
  9. Linux学习笔记20——第一个多线程程序
  10. 搭建spring工程配置数据源连接池
  11. Chosen通用初始化
  12. .NET之微信消息模板推送
  13. IP通信第四周作业
  14. 用ABP只要加人即可马上加快项目进展(二) - 分工篇
  15. kali 源
  16. Node.js文件编码格式的转换
  17. Eclipse 项目导入 Android Studio 导致的乱码问题
  18. 使用Python中的log模块将loss输出到终端与保存到文件
  19. MapReduce中的partitioner
  20. 【Direct2D1.1初探】Direct2D特效概览

热门文章

  1. Python 常用模块之re 正则表达式的使用
  2. mybatis 复杂传参
  3. Windows 8 Stroe Apps 控件
  4. [VBS]检测计算机各硬件信息
  5. shell 报错 /bin/bash^M: bad interpreter: No such file or directory
  6. Codeforces 1110 简要题解
  7. IntelliJ IDEA 2017版 使用笔记(十二) 其他操作:IDEA 快捷键
  8. IntellJ IDEA2017 springboot2.0.2中读取配置
  9. java学习1ATM
  10. CodeForces 916A Jamie and Alarm Snooze (水题)