2017-03-23 12 views
2

こんにちは私はカスタムUDFを使用して各カラムの各値の平方根を取っています。Spark ML:フィーチャーカラムの平方根を取る

square_root_UDF = udf(lambda x: math.sqrt(x), DoubleType()) 

for x in features: 
    dataTraining = dataTraining.withColumn(x, square_root_UDF(x)) 

これを実行する方法はありますか?この場合、多項式展開関数は適切ではありません。

答えて

2

UDFは使用しないでください。代わりに、組み込みの使用:

from pyspark.sql.functions import sqrt 

for x in features: 
    dataTraining = dataTraining.withColumn(x, sqrt(x)) 
0

スピードアップするためにあなたの計算をするためにこの場合には

  1. は、データフレーム(ないRDD)
  2. 使用ベクトル化操作(ないラムダにデータを置きますUDFでの操作)

user7757642 @により示唆されるように、あなたdataTrainingはRDDが

、その後であれば、これは一例です210
from pyspark.sql import SparkSession 
from pyspark.sql.functions import sqrt 

spark = SparkSession.builder.appName("SessionName") \ 
     .config("spark.some.config.option", "some_value") \ 
     .getOrCreate() 

df = spark.createDataFrame(dataTraining) 

for x in features: 
    df = df.withColumn(x, sqrt(x))