spark 密集向量和稀疏向量

2021-10-05 01:15:54 字數 1483 閱讀 5494

1、概念

稀疏向量和密集向量都是向量的表示方法 密集向量和稀疏向量的區別: 密集向量的值就是乙個普通的double陣列 而稀疏向量由兩個並列的 陣列indices和values組成 例如:向量(1.0,0.0,1.0,3.0)用密集格式表示為[1.0,0.0,1.0,3.0], 用稀疏格式表示為(4,[0,2,3],[1.0,1.0,3.0]) 第乙個4表示向量的長度(元素個數),[0,2,3]就是indices陣列,[1.0,1.0,3.0]是values陣列 表示向量0的位置的值是1.0,2的位置的值是1.0,而3的位置的值是3.0,其他的位置都是0

2、建立

import org.apache.spark.mllib.linalg.

// create a dense vector (1.0, 0.0, 3.0).

val dv: vector = vectors.dense(1.0, 0.0, 3.0)

// create a sparse vector (1.0, 0.0, 3.0) by specifying its indices and values corresponding to nonzero entries.

val sv1: vector = vectors.sparse(3, array(0, 2), array(1.0, 3.0))

// create a sparse vector (1.0, 0.0, 3.0) by specifying its nonzero entries.

val sv2: vector = vectors.sparse(3, seq((0, 1.0), (2, 3.0)))

val training: dataframe = linerdd.map(line =>

else

}).filter(s => !s._1.equals("-1"))

.todf("id", "text", "label")

//transformer,轉換器,字元解析,轉換輸入文字,以空格分隔,轉成小寫詞

val tokenizer: tokenizer = new tokenizer()

.setinputcol("text")

.setoutputcol("words")

//transformer,轉換器,雜湊轉換,以雜湊方式將詞轉換成詞頻,轉成特徵向量

val hashtf: hashingtf = new hashingtf()

.setnumfeatures(1000) //預設是2^18

.setinputcol(tokenizer.getoutputcol).setoutputcol("features")

//列印hashingtf生成的稀疏向量長什麼樣

val wordsdata = tokenizer.transform(training)

val hashdata = hashtf.transform(wordsdata)

hashdata.collect().foreach(println)

spark mllib 密集向量和稀疏向量

mllib支援區域性向量和矩陣儲存在單台伺服器,也支援儲存於乙個或者多個rdd的分布式矩陣 區域性向量和區域性矩陣是用作公共介面的最簡單的資料模型。基本的線性代數運算由breeze提供。在監督學習中使用的訓練示例在mllib中稱為 標記點 因此,向量和 矩陣,標記點是 spark mllib基本的資...

spark mllib 密集向量和稀疏向量

mllib支援區域性向量和矩陣儲存在單台伺服器,也支援儲存於乙個或者多個rdd的分布式矩陣 區域性向量和區域性矩陣是用作公共介面的最簡單的資料模型。基本的線性代數運算由breeze提供。在監督學習中使用的訓練示例在mllib中稱為 標記點 因此,向量和 矩陣,標記點是 spark mllib基本的資...

Spark稀疏向量和稠密向量

旁邊的小伙一副生無可戀的表情 這是為什麼?我的 和之前寫的一樣,而且都是從官網copy的,結果怎麼是這樣子啊,我只是用向量彙編將多列轉為一列 val va new vectorassembler setinputcols array age sign province code lowest usa...