scala - 如何将 double 组的数据帧转换为向量?

标签 scala apache-spark

我有以下带有 double 组的数据框,需要将其转换为向量才能将其传递给 ML 算法。谁能帮我解决这个问题?

fList: org.apache.spark.sql.DataFrame = [features: array<double>]
+--------------------------------------------------------------------------------+
|features                                                                        |
+--------------------------------------------------------------------------------+
|[2.5046410000000003, 2.1487149999999997, 1.0884870000000002, 3.5877090000000003]|
|[0.9558040000000001, 0.9843780000000002, 0.545025, 0.9979860000000002]          |
+--------------------------------------------------------------------------------+

预期输出: 应该看起来像这样。

fList: org.apache.spark.sql.DataFrame = [features: vector]

最佳答案

我建议你写一个udf函数

import org.apache.spark.sql.functions._
import org.apache.spark.mllib.linalg.Vectors
def convertArrayToVector = udf((features: mutable.WrappedArray[Double]) => Vectors.dense(features.toArray))

并在 withColumn api 中调用该函数

scala> df.withColumn("features", convertArrayToVector($"features"))
res1: org.apache.spark.sql.DataFrame = [features: vector]

希望回答对你有帮助

关于scala - 如何将 double 组的数据帧转换为向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47543747/

相关文章:

java - 在 Scala 中获得 "setter"的正确方法是什么?

scala - 如何在scala3中编写内联for循环?

Scala 2.8 和 map View

java - 无法使用 Java 启动 Spark

python-2.7 - 如何在 pyspark 中创建具有两个输入的 UDF

scala - 如何设置 akka Actor 容错?

performance - 为什么golang比scala慢?

apache-spark - Spark ML 中的 Param[] 和 Params[] 是什么

scala - 错误 : overloaded method value options with alternatives

java - 尝试触发提交时出现 FileNotFound 异常