2016-04-10 13 views
0

私の質問はthe pageのコードに基づいています。apacheスパーク理解密度ベクトル

私の一般的な理解は、要素のほとんどが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"]) 
+1

を作成するために、密な方法でmllibベクトル工場でそれらを作成することができます参照として、法線ベクトルに相当しますあなたが求めていることははっきりしていません。どうした ? – eliasah

+0

なぜ、「Vectors.dense」が使われたのかを理解するのに苦労しています。なぜ最初の要素が '(1、([0,1.11,0.1]))'であると言うことができないのでしょうか? – user2543622

答えて

1

スパークスカラ高性能線形代数のためのフードの下でbreeze使用します。

Spark MLlibとMLでは、いくつかのアルゴリズムはどちらかといえば密であるかまばらなorg.apache.spark.mllib.libalg.Vectorタイプに依存しています。

これらは、スカラのベクトルまたは配列の間のmllibからの密なベクトルへの暗黙的な変換ではありません。

Semanticaly話す、高密度ベクトルは、あなたがタイプのベクトルorg.apache.spark.mllib.libalg.Vector