spark向量
1、本地向量
MLlib的本地向量主要分為兩種,DenseVector和SparseVector,顧名思義,前者是用來保存稠密向量,后者是用來保存稀疏向量,其創建方式主要有一下三種(三種方式均創建了向量(1.0, 0.0, 2.0):
對于稠密向量:很直觀,你要創建什么,就加入什么,其函數聲明為Vector.dense(values : Array[Double])
對于稀疏向量,當采用第一種方式時,3表示此向量的長度,第一個Array(0,2)表示的索引,第二個Array(1.0, 3.0)與前面的Array(0,2)是相互對應的,表示第0個位置的值為1.0,第2個位置的值為3
對于稀疏向量,當采用第二種方式時,3表示此向量的長度,后面的比較直觀,Seq里面每一對都是(索引,值)的形式。
tips:由于scala中會默認包含scal.collection.immutalbe.Vector,所以當使用MLlib中的Vector時,需要顯式的指明import路徑
2、向量標簽
向量標簽和向量是一起的,簡單來說,可以理解為一個向量對應的一個特殊值,這個值的具體內容可以由用戶指定,比如你開發了一個算法A,這個算法對每個向量處理之后會得出一個特殊的標記值p,你就可以把p作為向量標簽。同樣的,更為直觀的話,你可以把向量標簽作為行索引,從而用多個本地向量構成一個矩陣(當然,MLlib中已經實現了多種矩陣)
其使用代碼為:
對于pos變量,第一個參數1.0的具體含義只有你自己知道咯,可以使行索引,可以使特殊值神馬的
從文件中直接讀入一個LabeledPoint
MLlib提供了一種快捷的方法,可以讓用戶直接從文件中讀取LabeledPoint格式的數據。規定其輸入文件的格式為:
然后通過一下方式直接讀入即可
val test : RDD[LabeledPoint] = MLUtils.loadLibSVMFile(sc, "path")?
3、本地矩陣
既然是算數運算包,肯定少不了矩陣包,先上代碼:
?
上面的代碼段創建了一個稠密矩陣:
| 1.0 | 2.0 |
| 3.0 | 4.0 |
| 5.0 | 6.0 |
很明顯,創建的時候是將原來的矩陣按照列變成一個一維矩陣之后再初始化的。?tips:注意,我們創建的是稠密矩陣,不幸的事,MLlib中并沒有提供稀疏矩陣的實現,官方說在后續版本中會提供
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: Spark学习笔记:数据读取和保存
- 下一篇: spark上运行xgboost-scal