Spark mlib的本地向量有两种:

DenseVctor :稠密向量 其创建方式 Vector.dense(数据)

SparseVector :稀疏向量 其创建方式有两种:

  方法一:Vector.sparse(向量长度,索引数组,与索引数组所对应的数值数组)

  方法二:Vector.sparse(向量长度,(索引,数值),(索引,数值),(索引,数值),...(索引,数值))

示例:

比如向量(1,0,3,4)的创建有三种方法:

稠密向量:直接Vectors.dense(1,0,3,4)

稀疏向量:

方法一:Vector.sparse(4,(0,2,3),(1,3,4))

(0,2,3) 表示该向量的第0个,第2个,第3个位置,(1,3,4) 表示(0,2,3)位置对应的数值分别为1,3,4

方法二:Vector.sparse(4,(0,1),(2,3),(3,4))

    (0,1)就是(索引,数值)的形式。位置0的数值为1, 位置2的数值为3,位置3的数值为4。

所有本地向量都以org.apache.spark.mllib.linalg.Vector为基类,DenseVectorSparseVector分别是它的两个实现类,故推荐使用Vectors工具类下定义的工厂方法来创建本地向  量,请看如下实例(假设在Spark-shell中运行,下同):

  1.  scala>import org.apache.spark.mllib.linalg.{Vector, Vectors}
    import org.apache.spark.mllib.linalg.{Vector, Vectors} // 创建一个稠密本地向量
    scala> val dv: Vector = Vectors.dense(2.0, 0.0, 8.0)
    dv: org.apache.spark.mllib.linalg.Vector = [2.0,0.0,8.0]
    // 创建一个稀疏本地向量
    // 方法第二个参数数组指定了非零元素的索引,而第三个参数数组则给定了非零元素值
    scala> val sv1: Vector = Vectors.sparse(, Array(, ), Array(2.0, 8.0))
    sv1: org.apache.spark.mllib.linalg.Vector = (,[,],[2.0,8.0])
    // 另一种创建稀疏本地向量的方法
    // 方法的第二个参数是一个序列,其中每个元素都是一个非零值的元组:(index,elem)
    scala> val sv2: Vector = Vectors.sparse(, Seq((, 2.0), (, 8.0)))
    sv2: org.apache.spark.mllib.linalg.Vector = (,[,],[2.0,8.0])

这里需要注意的是,Scala会默认引入scala.collection.immutable.Vector,我们要显式地引入org.apache.spark.mllib.linalg.Vector来使用MLlib提供的向量类型。

Spark mlib的本地向量的更多相关文章

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

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

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

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

  3. Spark MLib 数据类型

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

  4. Spark MLib:梯度下降算法实现

    声明:本文参考< 大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现> 1. 什么是梯度下降? 梯度下降法(英语:Gradient descen ...

  5. Spark Mllib里的向量标签概念、构成(图文详解)

    不多说,直接上干货! Labeled point: 向量标签 向量标签用于对Spark Mllib中机器学习算法的不同值做标记. 例如分类问题中,可以将不同的数据集分成若干份,以整数0.1.2,... ...

  6. Spark MLib完整基础入门教程

    Spark MLib 在Spark下进行机器学习,必然无法离开其提供的MLlib框架,所以接下来我们将以本框架为基础进行实际的讲解.首先我们需要了解其中最基本的结构类型,即转换器.估计器.评估器和流水 ...

  7. Spark MLib 基本统计汇总 2

    4. 假设检验 基础回顾: 假设检验,用于判断一个结果是否在统计上是显著的.这个结果是否有机会发生. 显著性检验 原假设与备择假设 常把一个要检验的假设记作 H0,称为原假设(或零假设) (null ...

  8. Spark MLib 基本统计汇总 1

    1.  概括统计 summary statistics MLlib支持RDD[Vector]列式的概括统计,它通过调用 Statistics 的 colStats方法实现. colStats返回一个  ...

  9. 009 搭建Spark的maven本地windows开发环境以及测试

    在看完下面的细节之后,就会发现,spark的开发,只需要hdfs加上带有scala的IDEA环境即可.  当run运行程序时,很快就可以运行结束. 为了可以看4040界面,需要将程序加上暂定程序,然后 ...

随机推荐

  1. .NET 中 如果一个Task A正在await另一个Task B,那么Task A是什么状态

    新建一个.NET Core控制台程序,输入如下代码: using System; using System.Threading; using System.Threading.Tasks; class ...

  2. GoBelieve-国内唯一开源IM服务

    GoBelieve-国内唯一开源IM服务 1. 一小时接入 专注IM,无冗余功能 几行代码,一小时接入 省时省力. 2. 自由定制 提供最新源码, 自行二次开发,业务协议 交互视觉均可根据业务需求 自 ...

  3. WebApiClient.AOT.dll 调用api地址 -> 调用方法

    优点:简化api调用过程,WebApiClient.AOT.dll中的IHttpApi接口 缺点:只适用于内部服务之间的调用(没有验证过程) 1.继承IHttpAPi接口 public interfa ...

  4. Oracle创建序列,Oracle创建序列语法

    -- Oracle创建序列 Create sequence CREATE SEQUENCE SEQ_SINGER -- 序列名称  START WITH 2 -- 开始数字  MAXVALUE 999 ...

  5. 外键参数 onupdate,ondelete等(cascade,no adcion,set null,restrict)

    MySQL外键约束On Delete.On Update各取值的含义 先看On Delete属性,可能取值如上图为:No Action, Cascade,Set Null, Restrict属性. 当 ...

  6. wireshark利用正则表达式过滤http协议中的jpg png zip等无用的数据包

    主要工具:小度随身wifi热点 + wireshark抓包工具.(强烈不建议使用360的产品,非常垃圾,而且干扰代理#墙IP,搞得你不能***) 利用wireshark这个强大的协议分析利器.去分析某 ...

  7. Eclipse报The default workspace'xxxxx' is in use or cannot be created Pl

    原因:出现这种情况一般是workspace的配置文件中出现了.lock文件(workspace/.metadata/.lock),锁定了workspace.把.lock文件删除即可.如果该文件不能删除 ...

  8. PHP服务端支持跨域

    跨域 由于浏览器的同源策略,导致浏览器页面访问非同源(协议.域名.端口任一不同)服务器产生跨域问题! PHP服务端配置支持跨域: // 指定允许其他域名访问, * 表示全部域名 header('Acc ...

  9. 『Linux基础 - 3』 Linux文件目录介绍

    Windows 和 Linux 文件系统区别 -- 结构 Windows 下的文件系统 - 在 Windows 下,打开 "计算机",我们看到的是一个个的驱动器盘符: - 每个驱动 ...

  10. Go 入门 - 控制流

    主要内容来自中文版的官方教程Go语言之旅 目的为总结要点 循环 Go 只有 for循环 for 由三部分组成,用分号间隔开 初始化语句:在第一次迭代之前执行,通常为一句短变量声明(i:=0) 条件表达 ...