在版本2.0.0中使用pySpark ML API进行线性回归的简单示例,我在新ML库中出错。
代码是:
from pyspark.sql import SQLContext
sqlContext =SQLContext(sc)
from pyspark.mllib.linalg import Vectors
data=sc.parallelize(([1,2],[2,4],[3,6],[4,8]))
def f2Lp(inStr):
return (float(inStr[0]), Vectors.dense(inStr[1]))
Lp = data.map(f2Lp)
testDF=sqlContext.createDataFrame(Lp,["label","features"])
(trainingData, testData) = testDF.randomSplit([0.8,0.2])
from pyspark.ml.regression import LinearRegression
lr=LinearRegression()
model=lr.fit(trainingData)
和错误:
IllegalArgumentException: 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.'
我应该如何将矢量要素从.mllib转换为.ml类型?
答案 0 :(得分:9)
从Spark2.0使用
from pyspark.ml.linalg import Vectors, VectorUDT
而不是
from pyspark.mllib.linalg import Vectors, VectorUDT
答案 1 :(得分:0)
方法1 使用正确的导入可以解决此问题 那是
istioctl kube-inject
其他方法是使用mapper函数将mllib向量转换为字符串并将其解析回ml向量。