gpt4 book ai didi

apache-spark - 如何从 org.apache.spark.mllib.linalg.VectorUDT 转换为 ml.linalg.VectorUDT

转载 作者:行者123 更新时间:2023-11-30 08:26:32 25 4
gpt4 key购买 nike

我正在使用 Spark cluster 2.0,我想从 org.apache.spark.mllib.linalg.VectorUDT 转换一个向量至org.apache.spark.ml.linalg.VectorUDT .

# Import LinearRegression class
from pyspark.ml.regression import LinearRegression

# Define LinearRegression algorithm
lr = LinearRegression()

modelA = lr.fit(data, {lr.regParam:0.0})

错误:

u'requirement failed: Column features must be of type org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7 but was actually org.apache.spark.mllib.linalg.VectorUDT@f71b0bce.'

有什么想法我将如何在向量类型之间进行转换。

非常感谢。

最佳答案

在 PySpark 中,您需要一个 RDD 上的或map。让我们使用第一个选项。首先是一些导入:

from pyspark.ml.linalg import VectorUDT
from pyspark.sql.functions import udf

和一个函数:

as_ml = udf(lambda v: v.asML() if v is not None else None, VectorUDT())

示例数据:

from pyspark.mllib.linalg import Vectors as MLLibVectors

df = sc.parallelize([
(MLLibVectors.sparse(4, [0, 2], [1, -1]), ),
(MLLibVectors.dense([1, 2, 3, 4]), )
]).toDF(["features"])

result = df.withColumn("features", as_ml("features"))

结果是

+--------------------+
| features|
+--------------------+
|(4,[0,2],[1.0,-1.0])|
| [1.0,2.0,3.0,4.0]|
+--------------------+

关于apache-spark - 如何从 org.apache.spark.mllib.linalg.VectorUDT 转换为 ml.linalg.VectorUDT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com