我想使用pyspark.mllib.stat.Statistics.corr
函数来计算两列pyspark.sql.dataframe.DataFrame
对象之间的相关性。 corr
函数需要rdd
Vectors
个df['some_name']
个对象。如何将rdd
的{{1}}列转换为Vectors.dense
个@IncidentDate
对象?
答案 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")