2016-06-03 17 views
5

Chcę użyć funkcji pyspark.mllib.stat.Statistics.corr do obliczenia korelacji między dwiema kolumnami obiektu pyspark.sql.dataframe.DataFrame. Funkcja corr oczekuje pobrania obiektów rdd z Vectors. Jak przetłumaczyć kolumnę obiektu df['some_name'] na rdd obiektu Vectors.dense?Korelacja komputerowa Pyspark

Odpowiedz

5

Nie powinno być takiej potrzeby. Dla liczbowa, którą można obliczyć korelację bezpośrednio za pomocą DataFrameStatFunctions.corr:

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

inaczej można użyć VectorAssembler:

from pyspark.ml.feature import VectorAssembler 

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

Obsługuje tylko Pearson. – VJune

1

Ok I zdobione:

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