zoukankan      html  css  js  c++  java
  • Spark mlib的本地向量

    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.  1 scala>import org.apache.spark.mllib.linalg.{Vector, Vectors}
       2 import org.apache.spark.mllib.linalg.{Vector, Vectors}
       3  
       4 // 创建一个稠密本地向量
       5 scala> val dv: Vector = Vectors.dense(2.0, 0.0, 8.0)
       6 dv: org.apache.spark.mllib.linalg.Vector = [2.0,0.0,8.0]
       7 // 创建一个稀疏本地向量
       8 // 方法第二个参数数组指定了非零元素的索引,而第三个参数数组则给定了非零元素值
       9 scala> val sv1: Vector = Vectors.sparse(3, Array(0, 2), Array(2.0, 8.0))
      10 sv1: org.apache.spark.mllib.linalg.Vector = (3,[0,2],[2.0,8.0])
      11 // 另一种创建稀疏本地向量的方法
      12 // 方法的第二个参数是一个序列,其中每个元素都是一个非零值的元组:(index,elem)
      13 scala> val sv2: Vector = Vectors.sparse(3, Seq((0, 2.0), (2, 8.0)))
      14 sv2: org.apache.spark.mllib.linalg.Vector = (3,[0,2],[2.0,8.0])

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

  • 相关阅读:
    11-8 Eureka Server整合SpringSecurity解决安全问题
    11-7 Eureka Server安全问题介绍
    11-6 CORS跨域资源共享解决
    11-5 JWT验证演示
    11-4 JWT验证开发演示
    11-3 JWT颁发流程讲解
    11-2 JWT介绍
    11-1 服务安全章节介绍
    10-15 Zuul知识点梳理
    10-14 Zuul与Meetingfilm整合
  • 原文地址:https://www.cnblogs.com/lyy-blog/p/9288110.html
Copyright © 2011-2022 走看看