首页 > 技术,让世界更美好。 > 【Spark MLib】Spark MLib用于机器学习的基本类型

【Spark MLib】Spark MLib用于机器学习的基本类型

2018年1月15日

1.Local Vector(本地向量)

 

    本地向量由基于零的整型索引和双精度浮点型组成的数据结构,存储在单台机器上。本地向量分为dense vector(密集向量)和sparse vector(稀疏向量)。

    • dense vector:直接使用浮点数组表示向量。
    • sparse vector:通过整型索引和和其浮点数值表示。

    (1.0, 0.0, 3.0)表示为dense vector为[1.0, 0.0, 3.0] ,表示为sparse vector为(3, [0, 2], [1.0, 3.0]),其中3代表向量的长度,0和2分别指索引位置。

2.Labeled Point(标签点)

 

    标签点由一个Local Vector和一个双精度浮点型的Label组成。

注意:实际应用中,我们会常常使用libSVM格式的数据文件,这是一种规范好稀疏特征向量的文本格式的文本文件。spark可以直接通过MLUtils.loadLibSVMFile()读取libSVM格式文件

 

 

3.Local Matrix(本地矩阵)

 

    本地矩阵分为密集矩阵(dense matrix)和稀疏矩阵(dense matrix)。含义类似稀疏和密集向量。

 

 

4.Distributed matrix(分布式矩阵)

 

    spark具有三类分布式矩阵存储格式:RowMatrix(行矩阵)、IndexedRowMatrix(行索引矩阵)、CoordinateMatrix(三元组矩阵)和BlockMatrix(块矩阵)。

  • RowMatrix

每一行都是一个Vector,那么RDD[Vector]就被称为行矩阵。一般用来统计平均数、方差、协同方差或者用于SVD和PCA。

  • IndexedRowMatrix

IndexedRowMatrix是在RowMatrix的基础上为每一行添加一个Long类型的索引。

  • CoordinateMatrix

CoordinateMatrix本质上是一个RDD[(Long,Long,Double)],其中三元组依次代表行索引、列索引和值。CoordinateMatrix多用于较为稀疏的矩阵。实际在spark 中(Long,Long,Double)三元组用MatrixEntry对象封装。

  • BlockMatrix

分块矩阵由((Int,Int),Matrix)组成,其中两个Int代表Matrix在整个矩阵中的位置。

本文的评论功能被关闭了.