web-dev-qa-db-ja.com

PySpark計算相関

pyspark.mllib.stat.Statistics.corr関数を使用して、pyspark.sql.dataframe.DataFrameオブジェクトの2つの列間の相関を計算します。 corr関数はrddオブジェクトのVectorsを取ることを期待しています。 df['some_name']の列をVectors.denseオブジェクトのrddに変換するにはどうすればよいですか?

10
VJune

その必要はないはずです。数値の場合、DataFrameStatFunctions.corrを使用して直接相関を計算できます。

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

それ以外の場合は、VectorAssemblerを使用できます。

from pyspark.ml.feature import VectorAssembler

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

わかりました。

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

df.stat.corr("column1","column2")

0
Muhammad Usman