2015-07-20 27 views
6

So erstellen SparseVector und dichte VektordarstellungenSparse Vector vs Dense Vector

wenn die DenseVector ist:

denseV = np.array([0., 3., 0., 4.]) 

Was die Sparse Vector Darstellung sein?

+1

Für diejenigen, die den Titel "Sparse Vector vs Dense Vector" lesen und wurden nach einer Erklärung zu suchen, wenn die verwenden, [diese Antwort] (http: // Stackoverflow. com/a/26706528/877069) hat die Informationen, die Sie suchen. –

Antwort

11

Wenn ich nicht gründlich Ihre Zweifel falsch verstanden haben, zeigt die MLlib data type documentation dies ganz deutlich:

import org.apache.spark.mllib.linalg.Vector; 
import org.apache.spark.mllib.linalg.Vectors; 

// Create a dense vector (1.0, 0.0, 3.0). 
Vector dv = 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. 
Vector sv = Vectors.sparse(3, new int[] {0, 2}, new double[] {1.0, 3.0}); 

Wo das zweite Argument von Vectors.sparse ist ein Array der Indizes, und das dritte Argument ist die Anordnung der Ist-Werte in diesen Indizes.

+0

Oh, ich habe nicht die richtige Anzahl von Indizes weitergegeben. SparseV = SparseVector (4, [0, 1, 2, 3], [0., 3., 0., 4.]) –

+1

Welche Bedeutung hat ein Punkt nach der Zahl, dh 1.? –

+1

Der Punkt zeigt nur einen Fließkommatyp an. "1." entspricht "1.0" –

5

Sparse Vektoren sind, wenn Sie viele Werte im Vektor als Null haben. Während ein dichter Vektor ist, wenn die meisten Werte im Vektor nicht Null sind.

Wenn Sie einen spärlichen Vektor aus dem dichten Vektor, verwenden Sie angegeben erstellen haben die folgende Syntax:

Vector sparseVector = Vectors.sparse(4, new int[] {1, 3}, new double[] {3.0, 4.0}); 

Der Link unten ziemlich nützlich ist, ein gutes Verständnis für das Gesamtkonzept für immer.

http://techchai.com/2017/03/13/sparse-vectors-in-apache-spark/

Dank