Pyspark y PCA: ¿Cómo puedo extraer los vectores propios de esta PCA? ¿Cómo puedo calcular cuánta varianza están explicando?

Estoy reduciendo la dimensionalidad de unSpark DataFrame conPCA modelo con pyspark (utilizando elspark ml biblioteca) de la siguiente manera:

pca = PCA(k=3, inputCol="features", outputCol="pca_features")
model = pca.fit(data)

dóndedata es unSpark DataFrame con una columna labradafeatures cual es unDenseVector de 3 dimensiones:

data.take(1)
Row(features=DenseVector([0.4536,-0.43218, 0.9876]), label=u'class1')

Después de ajustar, transformo los datos:

transformed = model.transform(data)
transformed.first()
Row(features=DenseVector([0.4536,-0.43218, 0.9876]), label=u'class1', pca_features=DenseVector([-0.33256, 0.8668, 0.625]))

Mi pregunta es: ¿Cómo puedo extraer los vectores propios de esta PCA? ¿Cómo puedo calcular cuánta varianza están explicando?

Respuestas a la pregunta(1)

Su respuesta a la pregunta