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
為基類,densevector
和sparsevector
分別是它的兩個實現類,故推薦使用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的方向角為 則 向量夾角 向量之間夾角是將兩個向量平移到共起點時所成的角。當兩個向量同向時,...
向量的性質
向量性質 零向量是任何向量的線性組合,零向量與任何同維實向量正交.單個零向量線性相關 單個非零向量線性無關.部分相關,整體必相關 整體無關,部分必無關.原向量組無關,接長向量組無關 接長向量組相關,原向量組相關.兩個向量線性相關對應元素成比例 兩兩正交的非零向量組線性無關.向量組中任一向量 都是此向...