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)
}
}
Spark MLlib数据类型——本地向量
最新推荐文章于 2025-07-09 17:43:31 发布