Chcę użyć funkcji pyspark.mllib.stat.Statistics.corr
do obliczenia korelacji między dwiema kolumnami obiektu pyspark.sql.dataframe.DataFrame
. Funkcja corr
oczekuje pobrania obiektów rdd
z Vectors
. Jak przetłumaczyć kolumnę obiektu df['some_name']
na rdd
obiektu Vectors.dense
?Korelacja komputerowa Pyspark
5
A
Odpowiedz
5
Nie powinno być takiej potrzeby. Dla liczbowa, którą można obliczyć korelację bezpośrednio za pomocą DataFrameStatFunctions.corr
:
df1 = sc.parallelize([(0.0, 1.0), (1.0, 0.0)]).toDF(["x", "y"])
df1.stat.corr("x", "y")
# -1.0
inaczej można użyć VectorAssembler
:
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(inputCols=df.columns, outputCol="features")
assembler.transform(df).select("features").flatMap(lambda x: x)
1
Ok I zdobione:
v1 = df.flatMap(lambda x: Vectors.dense(x[col_idx_1]))
v2 = df.flatMap(lambda x: Vectors.dense(x[col_idx_2]))
Obsługuje tylko Pearson. – VJune