Pyspark e PCA: Como posso extrair os autovetores deste PCA? Como posso calcular quanta variação eles estão explicando?

Estou reduzindo a dimensionalidade de umSpark DataFrame comPCA modelo com pyspark (usando ospark ml biblioteca) da seguinte forma:

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

Ondedata é umSpark DataFrame com uma coluna trabalhadafeatures qual é umDenseVector de 3 dimensões:

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

Após o ajuste, eu transformo os dados:

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]))

Minha pergunta é: Como posso extrair os vetores próprios deste PCA? Como posso calcular quanta variação eles estão explicando?

questionAnswers(1)

yourAnswerToTheQuestion