我的问题是基于the page的代码。
我的一般理解是当大多数元素为0时使用稀疏向量,而当极少数元素为0时使用密集向量。稀疏向量易于压缩
为什么我们必须将下面的向量定义为密集向量?鉴于每个向量中只有3个元素,定义密集向量有何帮助。为什么我们不能将它们称为向量?
# Prepare training data from a list of (label, features) tuples.
training = sqlContext.createDataFrame([
(1.0, Vectors.dense([0.0, 1.1, 0.1])),
(0.0, Vectors.dense([2.0, 1.0, -1.0])),
(0.0, Vectors.dense([2.0, 1.3, 1.0])),
(1.0, Vectors.dense([0.0, 1.2, -0.5]))], ["label", "features"])
答案 0 :(得分:1)
Spark在引擎盖下使用breeze用于Scala中的高性能线性代数。
在Spark MLlib和ML中,一些算法依赖于相当密集或稀疏的org.apache.spark.mllib.libalg.Vector
类型。
它们不是scala Vector或数组之间的隐式转换,而是来自mllib的密集Vector。
从语义上讲,密集向量等同于法向向量,如您所见,您可以使用mllib Vectors factory创建它们,使用密集方法创建类型为org.apache.spark.mllib.libalg.Vector的Vector