在 UDF 中使用 MLUtils.convertVectorColumnsToML()?
Using MLUtils.convertVectorColumnsToML() inside a UDF?
我有一个 Dataset/Dataframe,其中一个列是 mllib.linalg.Vector
(双打)。我想向此数据集添加另一列 ml.linalg.Vector
类型的数据集(因此我将拥有两种类型的 Vectors
)。原因是我正在评估一些算法,其中一些期望 mllib
向量,一些期望 ml
向量。另外,我必须将一种算法的 o/p 提供给另一种算法,并且每种算法都使用不同的类型。
有人可以帮我将 mllib.linalg.Vector
转换为 ml.linalg.Vector
并将新列附加到手头的数据集中。我尝试在 UDF
和常规函数中使用 MLUtils.convertVectorColumnsToML()
,但无法使其正常工作。我试图避免创建一个新的数据集,然后进行内部连接并删除列,因为数据集最终会很大并且连接很昂贵。
您可以使用方法 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
.
我有一个 Dataset/Dataframe,其中一个列是 mllib.linalg.Vector
(双打)。我想向此数据集添加另一列 ml.linalg.Vector
类型的数据集(因此我将拥有两种类型的 Vectors
)。原因是我正在评估一些算法,其中一些期望 mllib
向量,一些期望 ml
向量。另外,我必须将一种算法的 o/p 提供给另一种算法,并且每种算法都使用不同的类型。
有人可以帮我将 mllib.linalg.Vector
转换为 ml.linalg.Vector
并将新列附加到手头的数据集中。我尝试在 UDF
和常规函数中使用 MLUtils.convertVectorColumnsToML()
,但无法使其正常工作。我试图避免创建一个新的数据集,然后进行内部连接并删除列,因为数据集最终会很大并且连接很昂贵。
您可以使用方法 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
.