2017-02-08 9 views
1

Мне нужно выяснить, как создать единую матрицу из плотных векторов произвольного размера в искровом свете. Я пытался что-то сделать из модуля mllib.linalg.distributed, но безрезультатно. Мне нужна фреймворк с одним столбцом «функции», который имеет DenseVectors в качестве своих строк, где каждая строка является соответствующей строкой в ​​единичной матрице.Создайте единую матрицу из плотных векторов в качестве световой информационной рамки

ответ

2

Простой и простой с pyspark.mllib.linalg.distributed:

from pyspark.mllib.linalg.distributed import MatrixEntry, CoordinateMatrix 
from pyspark import SparkContext 

def identity(n: int, sc: SparkContext) -> CoordinateMatrix: 
    return CoordinateMatrix(
     sc.range(n).map(lambda i: MatrixEntry(i, i, 1.0)), n, n) 

Использование DataFrames и DenseVectors не имеет особого смысла. Прежде всего DataFrames не упорядочены и не поддерживают алгебраические операции. Более того, использование DenseVectors вызовет проблемы памяти с матрицами любого размера, где использование распределенных структур данных оправдано.