5

Spark cluster 2.0 kullanıyorum ve ben org.apache.spark.mllib.linalg.VectorUDT için org.apache.spark.ml.linalg.VectorUDT bir vektör dönüştürmek istiyorum.Nasıl org.apache.spark.mllib.linalg.VectorUDT için ml.linalg.VectorUDT dönüştürebilirsiniz

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

# Define LinearRegression algorithm 
lr = LinearRegression() 

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

Hata:

u'requirement failed: Column features must be of type [email protected] but was actually [email protected]'

Ben vektör tipleri arasında bu dönüşümü yapacağını nasıl Herhangi bir düşünce.

Çok teşekkürler.

cevap

6

PySpark'ta RDD üzerinde bir map'a ihtiyacınız olacak. İlk seçeneği kullanalım. İlk ithalat bir çift:

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

ve bir işlev:

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

örnek verileriyle:

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")) 

sonuç

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