zoukankan      html  css  js  c++  java
  • spark-mllib 密集向量和稀疏向量

    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

  • 相关阅读:
    android29
    android28
    android27
    android26
    Dynamics CRM2011 MspInstallAction failed when installing an Update Rollup
    Dynamics CRM Import Solution Attribute Display Name description is null or empty
    The service cannot be activated because it does not support ASP.NET compatibility
    IIS部署WCF报 无法读取配置节“protocolMapping”,因为它缺少节声明
    Unable to access the IIS metabase.You do not have sufficient privilege
    LM算法与非线性最小二乘问题
  • 原文地址:https://www.cnblogs.com/honeybee/p/8629344.html
Copyright © 2011-2022 走看看