美文网首页
Data Types - Local matrix

Data Types - Local matrix

作者: 牛马风情 | 来源:发表于2017-05-09 19:10 被阅读0次

    局部矩阵

    局部矩阵具有整数类型的行和列索引和double类型的值,存储在单个节点上。MLlib支持密集矩阵,其入口值以列主序列存储在单个double元祖里,稀疏矩阵的非零入口值以列主要顺序存储在压缩稀疏列(CSC)格式中。例如,以下密集矩阵 存储在一维数组中。[1.0, 3.0, 5.0, 2.0, 4.0, 6.0] 矩阵的大小为(3, 2)

    ⎛1.0 3.0⎞
    ⎜5.0 2.0⎟
    ⎝4.0 6.0⎠

    Scala

    基类局部矩阵是 Matrix,我们提供两种实现:DenseMatrix,和SparseMatrix。我们建议使用实现的工厂方法Matrices来创建本地矩阵。记住,MLlib中的局部矩阵以列主要顺序存储。

    import org.apache.spark.mllib.linalg.{Matrix, Matrices}
    
    // Create a dense matrix ((1.0, 2.0), (3.0, 4.0), (5.0, 6.0))
    val dm: Matrix = Matrices.dense(3, 2, Array(1.0, 3.0, 5.0, 2.0, 4.0, 6.0))
    
    // Create a sparse matrix ((9.0, 0.0), (0.0, 8.0), (0.0, 6.0))
    val sm: Matrix = Matrices.sparse(3, 2, Array(0, 1, 3), Array(0, 2, 1), Array(9, 6, 8))
    

    sparse matrix csc 构造方法

    (9.0, 0.0)
    (0.0, 8.0)
    (0.0, 6.0)

    构造 数组 csc
    Array(0, 1, 3) Array(0, 2, 1) Array(9, 6, 8)

    • 第一个Array:
      第一个array的长度为矩阵的 列数(column)+1并且第一位永远为 0 第n列为 matrix的前(n-1)列 不为0 的元素数,如上matrix的第一列 有1个不为零的数,前两列有3个部位0的数组 那么array1 为 Array(0,1,3)

    • 第二个Array:
      第二个array 为 每列中不为0的元素的行号,那么他的位数应该是 第一个Array的最后一个元素大小,计算如上第二个Array为Array(0,1,2)

    • 第三个Array:
      第三个array 为 每列中不为0的元素的值,那么他的位数应该是 第一个Array的最后一个元素大小,一次计算如上第二个Array为Array(9,8,6)

    相关文章

      网友评论

          本文标题:Data Types - Local matrix

          本文链接:https://www.haomeiwen.com/subject/izeitxtx.html