我有一个数据集/数据帧,其中mllib.linalg.Vector
(双打)作为其中一列。我想在此数据集的类型ml.linalg.Vector
的数据集中添加另一列(因此我将有两种类型的Vectors
)。原因是我正在评估一些算法,其中一些期望mllib
向量和一些期望ml
向量。另外,我必须将一个算法的o / p提供给另一个,每个算法使用不同的类型。
有人可以帮助我将mllib.linalg.Vector
转换为ml.linalg.Vector
并将新列添加到手头的数据集中。我尝试在MLUtils.convertVectorColumnsToML()
和常规函数中使用UDF
但无法使其正常工作。我试图避免创建一个新的数据集,然后进行内部连接和删除列,因为数据集最终将是巨大的,并且连接是昂贵的。
答案 0 :(得分:0)
您可以使用toML
方法将mllib
转换为ml
向量。 UDF
和用法示例如下所示:
val convertToML = udf((mllibVec: org.apache.spark.mllib.linalg.Vector) = > {
mllibVec.asML
})
val df2 = df.withColumn("mlVector", convertToML($"mllibVector"))
假设df
为原始数据框,并且mllib
向量的列名为mllibVector
。