【Scala-spark.mlib】稠密矩阵和稀疏矩阵的创建及操作

mlib中的稠密矩阵和稀疏矩阵

  • 1.矩阵
      •  1.1. mlib中的矩阵特质(Matrix)
      •  1.1. Matrix定义的基本方法
  • 2. 稠密矩阵
      •  1.1. mlib中的稠密矩阵(DenseMatrix)
      •   1.1.1. Matrices类中的稠密矩阵构造
      •  1.2. DenseMatrix相关方法
      •   1.2.1. 构造方法
      •   1.2.2. 成员方法
  • 3. 稀疏矩阵
      •  2.1. mlib中的稀疏矩阵(SparseMatrix)
      •   1.1.1. Matrices类中的稀疏矩阵构造
      •  2.2. SparseMatrix相关方法
      •   1.2.1. 构造方法
      •   1.2.2. 成员方法
  • 4. 总结

1.矩阵

 1.1. mlib中的矩阵特质(Matrix)

  Matrix特质是DenseMatrix和SparseMatrix的共同基类,其只包含1个公共变量:
Matrix类公共变量
  可以看到isTransposed“是否转置”变量默认为false,所以如果在DenseMatrix或SparseMatrix实例创建时,若未传入isTransposed = true的参数,则将以列主序存储矩阵。

 1.1. Matrix定义的基本方法

  这些在特质中实现的基本方法在其子类中几乎不被重写,有很高的复用性。

//sealed trait Matrix in "Matrices.scala"

返回矩阵元素数组:
toArray: Array[Double]

返回矩阵行迭代器:
rowIter: Iterator[Vector]
·实现是将矩阵转置后再调用子类实现的列迭代器:this.transpose.colIter

返回两个矩阵乘法结果:
multiply(y: DenseMatrix): DenseMatrix
返回矩阵向量乘法结果:
multiply(y: DenseVector): DenseVector
返回矩阵向量乘法结果:
multiply(y: Vector): DenseVector

返回矩阵形式字符串:
toString: String
·调用私有方法asBreeze.toString()
返回以最大行列数控制的矩阵的字符串:
toString(maxLines: Int, maxLineWidth: Int): String
·(这个我一直测试不成功,或者我理解的不对?暂时无解)

返回列主序的稀疏矩阵:
toSparseColMajor: SparseMatrix
返回行主序的稀疏矩阵:
toSparseRowMajor: SparseMatrix
返回对应的稀疏矩阵:
toSparse: SparseMatrix
·底层调用子类重写的私有方法toSparseMatrix(colMajor = true/false/isColMajor)

类似上面的稀疏矩阵,返回稠密矩阵,同样调用子类重写的私有方法:
toDenseColMajor: DenseMatrix
toDenseRowMajor: DenseMatrix
toDense: DenseMatrix

·注意:以上两类转换方法仅仅转换主序,并不转换元素。
·所以转换前后的矩阵元素大小及位置是不变的,仅仅变化的是矩阵的主序存储形式。

返回压缩后的矩阵,该矩阵可能为稠密或稀疏、列主序或行主序的矩阵:
compressed: Matrix
返回压缩后的列主序矩阵:
compressedColMajor: Matrix
返回压缩后的行主序矩阵:
compressedRowMajor: Matrix
·底层实现用多个计算矩阵所占字节数的私有方法,对矩阵进行计算比较,对存储方式进行选择。

2. 稠密矩阵

 1.1. mlib中的稠密矩阵(DenseMatrix)

  mlib中存储稠密矩阵的形式只有两种,都需要给定行数和列数,以及数值数组,而后分为按列主序存储(默认)和按

你可能感兴趣的:(scala,spark,大数据,ml)