PySpark计算相关

时间:2016-06-03 16:06:55

标签: python apache-spark pyspark apache-spark-sql apache-spark-mllib

我想使用pyspark.mllib.stat.Statistics.corr函数来计算两列pyspark.sql.dataframe.DataFrame对象之间的相关性。 corr函数需要rdd Vectorsdf['some_name']个对象。如何将rdd的{​​{1}}列转换为Vectors.dense@IncidentDate对象?

3 个答案:

答案 0 :(得分:11)

应该没有必要。对于数字,您可以使用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)

答案 1 :(得分:1)

好的我明白了:

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

答案 2 :(得分:1)

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