zoukankan      html  css  js  c++  java
  • Spark Mllib里的本地向量集(密集型数据集和稀疏型数据集概念、构成)(图文详解)

      不多说,直接上干货!

    Local  vector : 本地向量集

      由两类构成:稀疏型数据集(spares)和密集型数据集(dense)

      (1)、密集型数据集

          例如一个向量数据(9,5,2,7),可以设定为(9,5,2,7)进行存储,数据集被作为一个集合的形式整体存储。

      (2)、稀疏型数据集

          例如一个向量数据(9,5,2,7),可以按向量的大小存储为(4,Array(0,1,2,3),Array(9,5,2,7))

      

     testVector.scala

    复制代码
    package zhouls.bigdata.chapter4
    
    
    import org.apache.spark.mllib.linalg.{Vector, Vectors}
    
    object testVector {
      
      /*
       * 主函数
       */
      def main(args: Array[String]) {
        val vd: Vector = Vectors.dense(2, 0, 6)     //建立密集向量
        println(vd(2))                                //打印密集向量第3个值
        val vs: Vector = Vectors.sparse(4, Array(0,1,2,3), Array(9,5,2,7))//建立稀疏向量
        println(vs(2))                                             //打印稀疏向量第3个值
      }
    }
    复制代码

      有人会问,为什么会输出来为浮点型数了呢。

      答:对于目前,Spark Mllib,仅支持整数与浮点型数。这是因为与其目的数值计算有关。

      dense方法,不多赘述。

      sparse方法,第一个参数4是代表输入数据的大小,一般要求大于等于输入的数据值。

            第二个参数Array(0,1,2,3)是数据vs下标的数值

            第三个参数Array(9,5,2,7)是输入的数据值,一般要求将其作为一个Array类型的数据进行输入

       总结

      Spark MLlib的本地向量主要分为两种,DenseVector和SparseVector,顾名思义,前者是用来保存稠密向量,后者是用来保存稀疏向量,其创建方式主要有一下三种(三种方式均创建了向量(1.0, 0.0, 2.0):

    复制代码
    import org.apache.spark.mllib.linalg.{Vector, Vectors}  
      
    //创建一个稠密向量  
    val dv : Vector = Vector.dense(1.0,0.0,3.0);  
    //创建一个稀疏向量(第一种方式)  
    val sv1: Vector = Vector.sparse(3, Array(0,2), Array(1.0,3.0));  
    //创建一个稀疏向量(第二种方式)  
    val sv2 : Vector = Vector.sparse(3, Seq((0,1.0),(2,3.0)))  
    复制代码
      对于稠密向量:很直观,你要创建什么,就加入什么,其函数声明为Vector.dense(values : Array[Double])
      对于稀疏向量,当采用第一种方式时,3表示此向量的长度,第一个Array(0,2)表示的索引,第二个Array(1.0, 3.0)与前面的Array(0,2)是相互对应的,表示第0个位置的值为1.0,第2个位置的值为3
      对于稀疏向量,当采用第二种方式时,3表示此向量的长度,后面的比较直观,Seq里面每一对都是(索引,值)的形式。

      

      更多具体,见

    Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mllib数理统计

  • 相关阅读:
    平板涂色
    速算游戏_NOI导刊2011提高(04)
    信息学奥赛一本通——配套刷题网站
    求10000以内n的阶乘
    大整数的因子
    计算2的N次方
    大整数加法
    带余除法
    A/B 高精度
    A*B 高静度
  • 原文地址:https://www.cnblogs.com/zlslch/p/7469342.html
Copyright © 2011-2022 走看看