Spark MLlib数据类型——本地向量

本文介绍了Spark MLlib中的两种本地向量类型:稠密向量和稀疏向量,并展示了如何创建这两种类型的向量及相互转换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import org.apache.spark.mllib.linalg
import org.apache.spark.mllib.linalg.Vectors

object DataTypeDemo {
  def main(args: Array[String]): Unit = {
    /**
      * MLlib数据类型——本地向量
      * 本地向量[Local Vector],主要向Spark提供一组可进行操作的数据集合,存储在单节点上。
      * MLlib支持2种本地向量类型:密集向量(dense)和稀疏向量(sparse)
      */
    //创建稠密向量,向量的索引从0开始
    //注意:此处用的是mllib中的Vector,不是scala.collection.immutable.Vector
    val dv: linalg.Vector = Vectors.dense(1.0, 0.0, 2.0, 3.0)
    println(dv)

    //稀疏向量:如果向量中元素存在大量为0的值,此时为了节省空间可以创建稀疏向量来保存。
    //创建稀疏向量有以下两种方式:
    //1、使用数组来创建,4代表向量的长度,Array(0,2,3)代表的是非0元素的索引,Array(1.0,2.0,3.0)代表的是前面索引对应的值
    val sv: linalg.Vector = Vectors.sparse(4, Array(0, 2, 3), Array(1.0, 2.0, 3.0))
    println(sv)
    //稀疏向量可以转换为稠密向量
    println(sv.toDense)

    //2、使用序列来创建稀疏向量,这种方法比较直观,4代表向量的长度,后面Seq是(索引,值)
    val sv2: linalg.Vector =Vectors.sparse(4,Seq((0,1.0),(2,2.0),(3,3.0)))
    println(sv2)
    println(sv2.toDense)
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值