这是我第一次使用PySpark(Spark 2),我试图为Logit模型创建一个玩具数据框。我已经成功运行了教程,现在想把自己的数据传递进去。
我尝试了以下代码:
%pyspark
import numpy as np
from pyspark.ml.linalg import Vectors, VectorUDT
from pyspark.mllib.regression import LabeledPoint
df = np.concatenate([np.random.randint(0,2, size=(1000)), np.random.randn(1000), 3*np.random.randn(1000)+2, 6*np.random.randn(1000)-2]).reshape(1000,-1)
df = map(lambda x: LabeledPoint(x[0], Vectors.dense(x[1:])), df)
mydf = spark.createDataFrame(df,["label", "features"])
但我无法摆脱:
TypeError: Cannot convert type <class 'pyspark.ml.linalg.DenseVector'> into Vector
我正在使用ML库进行向量操作,输入是一个双精度数组,请问有什么需要注意的地方吗?根据文档,应该没有问题。
非常感谢。
VectorAssembler
的东西进一步向下转换,以将4列转换为单个列,例如我的答案中的features
,因为Spark ML需要以这种形式提供特征... - desertnaut