Корреляция вычислений Pyspark
Я хочу использовать функцию pyspark.mllib.stat.Statistics.corr
для вычисления корреляции между двумя столбцами объекта pyspark.sql.dataframe.DataFrame
. Функция corr
ожидает взять rdd
из Vectors
объектов. Как перевести столбец df['some_name']
в rdd
объекта Vectors.dense
?
2 ответа:
В этом не должно быть необходимости. Для численных расчетов корреляцию можно вычислить непосредственно с помощью
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)