Data Types - Local matrix

局部矩阵

局部矩阵具有整数类型的行和列索引和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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值