2017-02-08 24 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) 

使用DataFramesDenseVectors並沒有太大的意義。首先DataFrames不是有序的,不支持代數運算。此外使用DenseVectors將導致任何大小的矩陣的內存問題,在這種情況下使用分佈式數據結構是合理的。