企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
本地向量存储于单台机器,其拥有 integer 类型的行,从 0 开始的索引,和 double 类型的值。 <br/> MLlib 支持两种类型的本地向量:密集向量(dense)和稀疏向量(sparse)。 密集向量由一个浮点数数组组成,如`(2.1,3.2,4.3)`;而一个稀疏向量由索引和一个浮点向量组成,如`(3,[0, 2],[5.6, 4.3])`代表一个稀疏向量。 <br/> 本地向量的基类是 Vector,并且它有两个实现:DenseVector 和 SparseVector。 ```scala sealed trait Vector extends scala.AnyRef with scala.Serializable class DenseVector ... extends scala.AnyRef with org.apache.spark.mllib.linalg.Vector class SparseVector ... extends scala.AnyRef with org.apache.spark.mllib.linalg.Vector ``` <br/> ```scala import org.apache.spark.mllib.linalg.{Vector, Vectors, DenseVector, SparseVector} object LocalVector { def main(args: Array[String]): Unit = { // 创建密集向量 (1.0,0.0,3.0) val dv: Vector = Vectors.dense(1.0, 0.0, 3.0) println(dv) // [1.0,0.0,3.0] // 使用数组创建稀疏向量 // def sparse(size : scala.Int, indices : scala.Array[scala.Int], values : scala.Array[scala.Double]) // size: 元素个数 // indices: 元素索引 // values: 元素值 val sv1: Vector = Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)) println(sv1) // (3,[0,2],[1.0,3.0]) // 使用序列创建稀疏向量 val sv2: Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0))) println(sv2) // (3,[0,2],[1.0,3.0]) // 稀疏向量转密集向量 val dv2: DenseVector = sv1.toDense println(dv2) // [1.0,0.0,3.0] // 密集向量转稀疏向量 val sv3: SparseVector = dv2.toSparse println(sv3) // (3,[0,2],[1.0,3.0]) } } ```