Разреден вектор срещу плътен вектор

Как да създадете SparseVector и плътни векторни представяния

ако DenseVector е:

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

Какво ще бъде представянето на Sparse Vector?


person Anoop Toffy    schedule 20.07.2015    source източник
comment
За тези, които са прочели заглавието Разреден вектор срещу плътен вектор и са търсили обяснение кога да използват кой, този отговор има информацията, която търсите.   -  person Nick Chammas    schedule 28.07.2016


Отговори (2)


Освен ако не съм разбрал съвсем погрешно вашето съмнение, документацията за тип данни MLlib илюстрира това съвсем ясно:

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});

Където вторият аргумент на Vectors.sparse е масив от индекси, а третият аргумент е масив от действителните стойности в тези индекси.

person Chthonic Project    schedule 20.07.2015
comment
О, не предавах правилния брой индекси. SparseV = SparseVector(4, [0, 1, 2, 3], [0., 3., 0., 4.]) - person Anoop Toffy; 21.07.2015
comment
какво е значението на точка след числото, т.е. 1. ? - person Anoop Toffy; 24.07.2015
comment
Точката просто показва тип с плаваща запетая. 1. е еквивалентно на 1.0 - person Abhinav Sood; 20.10.2016
comment
@MohitShah (i) Това е буквално първият пример за код в свързаната документация и (ii) отговорът включва също примера, показващ как точно да се създаде разреден вектор. - person Chthonic Project; 26.04.2019

Разредените вектори са, когато имате много стойности във вектора като нула. Докато плътен вектор е, когато повечето от стойностите във вектора не са нула.

Ако трябва да създадете разреден вектор от плътния вектор, който сте посочили, използвайте следния синтаксис:

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

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