Pyspark Spark 1.5元素产品
Spark 1.5最近问世,并在python()中实现了元素级乘法 我可以在向量上应用加权/变换向量(下面代码中的v2)来生成向量。但是,当我尝试将其应用于RDD[Vector]时,我得到: TypeError:无法将类型Pyspark Spark 1.5元素产品,pyspark,Pyspark,Spark 1.5最近问世,并在python()中实现了元素级乘法 我可以在向量上应用加权/变换向量(下面代码中的v2)来生成向量。但是,当我尝试将其应用于RDD[Vector]时,我得到: TypeError:无法将类型转换为向量 这是我的密码: from pyspark.mllib.linalg import Vectors from pyspark.mllib.feature import ElementwiseProduct v1 = sc.parallelize(Vectors.de
from pyspark.mllib.linalg import Vectors
from pyspark.mllib.feature import ElementwiseProduct
v1 = sc.parallelize(Vectors.dense([2.0, 2.0, 2.0]))
v2 = Vectors.dense([0.0, 1.0, 2.0])
transformer = ElementwiseProduct(v2)
transformedData = transformer.transform(v1)
print transformedData.collect()
如何生成一个RDD[Vector],它是v1和v2的哈达玛积?事实证明,我需要将v1转换为行矩阵
mat = RowMatrix(v1)
例如:
from pyspark.mllib.linalg.distributed import RowMatrix
v1 = sc.parallelize([[2.0, 2.0, 2.0], [3.0, 3.0, 3.0]])
mat = RowMatrix(v1)
v2 = Vectors.dense([0.0, 1.0, 2.0])
transformer = ElementwiseProduct(v2)
transformedData = transformer.transform(mat.rows)
print transformedData.collect()
将打印:
[DenseVector([0.0,2.0,4.0]),DenseVector([0.0,3.0,6.0])]
但我真正需要的是一个函数,它允许v2也有多个向量,而不是一个向量矩阵,但到目前为止,它似乎还不存在。事实证明,我需要将v1转换为行矩阵
mat = RowMatrix(v1)
例如:
from pyspark.mllib.linalg.distributed import RowMatrix
v1 = sc.parallelize([[2.0, 2.0, 2.0], [3.0, 3.0, 3.0]])
mat = RowMatrix(v1)
v2 = Vectors.dense([0.0, 1.0, 2.0])
transformer = ElementwiseProduct(v2)
transformedData = transformer.transform(mat.rows)
print transformedData.collect()
将打印:
[DenseVector([0.0,2.0,4.0]),DenseVector([0.0,3.0,6.0])]
我真正需要的是一个函数,它允许v2也有多个向量,而不是一个向量矩阵,但到目前为止,它似乎还不存在