2016-06-03 17 views
5

Ich möchte pyspark.mllib.stat.Statistics.corr Funktion verwenden, um die Korrelation zwischen zwei Spalten von pyspark.sql.dataframe.DataFrame Objekt zu berechnen. corr Funktion erwartet, eine rdd von Vectors Objekte zu nehmen. Wie übersetze ich eine Spalte von df['some_name'] zu rdd von Vectors.dense Objekt?Pyspark Computing Korrelation

Antwort

5

Das sollte nicht nötig sein. Für numerische können Sie Korrelation berechnen direkt DataFrameStatFunctions.corr mit:

df1 = sc.parallelize([(0.0, 1.0), (1.0, 0.0)]).toDF(["x", "y"]) 
df1.stat.corr("x", "y") 
# -1.0 

sonst kann man VectorAssembler verwenden:

from pyspark.ml.feature import VectorAssembler 

assembler = VectorAssembler(inputCols=df.columns, outputCol="features") 
assembler.transform(df).select("features").flatMap(lambda x: x) 
+0

Es nur pearson unterstützt. – VJune

1

Ok ich es herausgefunden:

v1 = df.flatMap(lambda x: Vectors.dense(x[col_idx_1])) 
v2 = df.flatMap(lambda x: Vectors.dense(x[col_idx_2]))