Spark mlib的本地向量

2022-08-16 04:09:15 字數 1606 閱讀 7156

spark mlib的本地向量有兩種:

densevctor :稠密向量 其建立方式 vector.dense(資料)

sparsevector :稀疏向量 其建立方式有兩種:

方法一:vector.sparse(向量長度,索引陣列,與索引陣列所對應的數值陣列)

方法二:vector.sparse(向量長度,(索引,數值),(索引,數值),(索引,數值),...(索引,數值))

示例:比如向量(1,0,3,4)的建立有三種方法:

稠密向量:直接vectors.dense(1,0,3,4)

稀疏向量:

方法一:vector.sparse(4,(0,2,3),(1,3,4))

(0,2,3) 表示該向量的第0個,第2個,第3個位置,(1,3,4) 表示(0,2,3)位置對應的數值分別為1,3,4

方法二:vector.sparse(4,(0,1),(2,3),(3,4))

(0,1)就是(索引,數值)的形式。位置0的數值為1, 位置2的數值為3,位置3的數值為4。

所有本地向量都以org.apache.spark.mllib.linalg.vector為基類,densevectorsparsevector分別是它的兩個實現類,故推薦使用vectors工具類下定義的工廠方法來建立本地向  量,請看如下例項(假設在spark-shell中執行,下同):

1 scala>import org.apache.spark.mllib.linalg.

2import org.apache.spark.mllib.linalg.34

//建立乙個稠密本地向量

5 scala> val dv: vector = vectors.dense(2.0, 0.0, 8.0

)6 dv: org.apache.spark.mllib.linalg.vector = [2.0,0.0,8.0]7

//建立乙個稀疏本地向量8//

方法第二個引數陣列指定了非零元素的索引,而第三個引數陣列則給定了非零元素值

9 scala> val sv1: vector = vectors.sparse(3, array(0, 2), array(2.0, 8.0

))10 sv1: org.apache.spark.mllib.linalg.vector = (3,[0,2],[2.0,8.0

])11

//另一種建立稀疏本地向量的方法

12//

方法的第二個引數是乙個序列,其中每個元素都是乙個非零值的元組:(index,elem)

13 scala> val sv2: vector = vectors.sparse(3, seq((0, 2.0), (2, 8.0

)))14 sv2: org.apache.spark.mllib.linalg.vector = (3,[0,2],[2.0,8.0])

這裡需要注意的是,scala會預設引入scala.collection.immutable.vector,我們要顯式地引入org.apache.spark.mllib.linalg.vector來使用mllib提供的向量型別。

向量的外積 向量積

叉乘,也叫向量的外積 向量積。顧名思義,求下來的結果是乙個向量,記這個向量為c。向量c 向量a 向量b a b sin 向量c的方向與a,b所在的平面垂直,且方向要用 右手法則 判斷 用右手的四指先表示向量a的方向,然後手指朝著手心的方向擺動到向量b的方向,大拇指所指的方向就是向量c的方向 因此向量...

方向余弦,向量夾角,向量的投影

方向余弦 用以確定向量的方向的量.向量 或有向直線 與座標軸正向或基向量的交角稱為向量的方向角.向量的方向角的余弦稱為向量的方向余弦.乙個向量的方向可以用它的方向角或方向余弦來確定.設向量r xi yj zk的方向角為 則 向量夾角 向量之間夾角是將兩個向量平移到共起點時所成的角。當兩個向量同向時,...

向量的性質

向量性質 零向量是任何向量的線性組合,零向量與任何同維實向量正交.單個零向量線性相關 單個非零向量線性無關.部分相關,整體必相關 整體無關,部分必無關.原向量組無關,接長向量組無關 接長向量組相關,原向量組相關.兩個向量線性相關對應元素成比例 兩兩正交的非零向量組線性無關.向量組中任一向量 都是此向...