2016-06-03 21 views
5

Tôi muốn sử dụng hàm pyspark.mllib.stat.Statistics.corr để tính toán mối tương quan giữa hai cột của đối tượng pyspark.sql.dataframe.DataFrame. Chức năng corr hy vọng sẽ mất một đối tượng rdd của Vectors. Làm cách nào để dịch một cột của df['some_name'] sang rdd của đối tượng Vectors.dense?Pyspark tương quan điện toán

Trả lời

5

Sẽ không cần thiết cho điều đó. Đối với số bạn có thể tính toán tương quan trực tiếp sử dụng DataFrameStatFunctions.corr:

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

nếu không bạn có thể sử dụng VectorAssembler:

from pyspark.ml.feature import VectorAssembler 

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

Nó chỉ hỗ trợ pearson. – VJune

1

Ok I figured it out:

v1 = df.flatMap(lambda x: Vectors.dense(x[col_idx_1])) 
v2 = df.flatMap(lambda x: Vectors.dense(x[col_idx_2])) 
Các vấn đề liên quan