pyspark.mllib.stat.Statistics.corr
関数を使用して、pyspark.sql.dataframe.DataFrame
オブジェクトの2つの列間の相関を計算します。 corr
関数はrdd
オブジェクトのVectors
を取ることを期待しています。 df['some_name']
の列をVectors.dense
オブジェクトのrdd
に変換するにはどうすればよいですか?
その必要はないはずです。数値の場合、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)
わかりました。
v1 = df.flatMap(lambda x: Vectors.dense(x[col_idx_1]))
v2 = df.flatMap(lambda x: Vectors.dense(x[col_idx_2]))
df.stat.corr("column1","column2")