Comment créer SparseVector
et des représentations vectorielles denses
si le DenseVector
est:
denseV = np.array([0., 3., 0., 4.])
Quelle sera la représentation vectorielle clairsemée?
Sauf si j'ai complètement mal compris votre doute, la documentation du type de données MLlib illustre cela très clairement:
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});
Où le deuxième argument de Vectors.sparse
est un tableau des indices, et le troisième argument est le tableau des valeurs réelles de ces indices.
Les vecteurs clairsemés sont lorsque vous avez beaucoup de valeurs dans le vecteur comme zéro. Alors qu'un vecteur dense est lorsque la plupart des valeurs dans le vecteur sont non nulles.
Si vous devez créer un vecteur clairsemé à partir du vecteur dense que vous avez spécifié, utilisez la syntaxe suivante:
Vector sparseVector = Vectors.sparse(4, new int[] {1, 3}, new double[] {3.0, 4.0});