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

时间:2022-09-08 09:46:10

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

spark-mllib 密集向量和稀疏向量的更多相关文章

  1. Spark Mllib里如何建立密集向量和稀疏向量(图文详解)

    不多说,直接上干货! 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mllib数理统计

  2. Mllib数据类型(密集向量和稀疏向量)

    1.局部向量 Mllib支持2种局部向量类型:密集向量(dense)和稀疏向量(sparse). 密集向量由double类型的数组支持,而稀疏向量则由两个平行数组支持. example: 向量(5.2 ...

  3. dense向量和稀疏向量sparse

    import org.apache.spark.mllib.linalg.Vectors object Test { def main(args: Array[String]) { val vd = ...

  4. Spark Mllib里的本地向量集(密集型数据集和稀疏型数据集概念、构成)(图文详解)

    不多说,直接上干货! Local  vector : 本地向量集 由两类构成:稀疏型数据集(spares)和密集型数据集(dense) (1).密集型数据集 例如一个向量数据(9,5,2,7),可以设 ...

  5. Spark的mlib中的稠密向量和稀疏向量

    spark mlib中2种局部向量:denseVector(稠密向量)和sparseVector(稀疏向量) denseVector向量的生成方法:Vector.dense() sparseVecto ...

  6. spark 稠密向量和稀疏向量

    Spark mlib的本地向量有两种: DenseVctor   :稠密向量   其创建方式   Vector.dense(数据) SparseVector :稀疏向量   其创建方式有两种: 方法一 ...

  7. Spark Mllib里如何建立向量标签(图文详解)

    不多说,直接上干货! 注意: val pos = LabeledPoint(1, vd) val neg = LabeledPoint(2, vs) 除了这两种建立向量标签.还可以从数据库中获取固定格 ...

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

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在*上对机器学习提出以下几种定义: l“机器学 ...

  9. Spark MLlib架构解析(含分类算法、回归算法、聚类算法和协同过滤)

    Spark MLlib架构解析 MLlib的底层基础解析 MLlib的算法库分析 分类算法 回归算法 聚类算法 协同过滤 MLlib的实用程序分析 从架构图可以看出MLlib主要包含三个部分: 底层基 ...

随机推荐

  1. ajax传递array参数

    var ticketId = new Array(); for(var i = 0; i < checkboxes.length; i++) { ticketId.push(checkboxes ...

  2. ios LoadView 方法

    当ViewController中的View不通过nib文件而是自己来创建的时候需要重载LoadView方法.否则不需要重载LoadView方法.

  3. &lpar;转载&rpar;SQL性能优化

    1.查询的模糊匹配尽量避免在一个复杂查询里面使用 LIKE '%parm1%'-- 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用.解决办法:其实只需要对该脚本略做改进,查询速度便会提高近 ...

  4. 股票投资组合-前进优化方法(Walk forward optimization)

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  5. 高通spi 屏幕 -lk代码分析

    lk SPI驱动 1. 初始化时钟 在lk中,我们是从kmain开始执行下来的,而执行顺序则是先初始化时钟,也就是在platform_early_init函数中开始执行的: 在这里我们需要修改这个函数 ...

  6. &lbrack;INS-20802&rsqb; Oracle Net Configuration Assistant failed

    [INS-20802] Oracle Net Configuration Assistant failed.在安装Oracle 11g R2时出现了该错误提示.以前安装的时候没有碰到过类似的错误.原来 ...

  7. asp&period;net MVC4 框架揭秘 读书笔记系列1

    1.1 传统MVC 名词解释 Autonomous View. AV. 自制视图 GUI图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式 ...

  8. 4-2 R语言函数 apply

    #apply函数,沿着数组的某一维度处理数据 #例如将函数用于矩阵的行或列 #与for/while循环的效率相似,但只用一句话可以完成 #apply(参数):apply(数组,维度,函数/函数名) & ...

  9. &lbrack;译&rsqb;Java 程序员应该了解的 10 个面向对象设计原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  10. (转)【前端模板之路】一、重构的兄弟说:我才不想看你的代码!把HTML给我交出来!

    原文地址:http://www.cnblogs.com/chyingp/archive/2013/06/30/front-end-tmplate-start.html 写在前面 随着前端领域的发展和社 ...