如何在 pyspark 中获取每个 PCA 组件的解释方差
How to get explained variance per PCA component in pyspark
据我所知,pyspark 提供的 PCA API 如:
from pyspark.ml.feature import PCA
pca = PCA(k=3, inputCol="features", outputCol="pcaFeatures")
model = pca.fit(data_frame)
然而在现实中,我发现解释方差比的使用更为广泛。例如,在 sklearn 中:
from sklearn.decomposition import PCA
pca_fitter = PCA(n_components=0.85)
有谁知道如何在 pyspark 中实现解释方差比?谢谢!
从 Spark 2.0 开始,PCAModel
包含一个 explainedVariance
方法;来自 docs:
explainedVariance
Returns a vector of proportions of variance explained by each principal component.
New in version 2.0.0.
这是一个包含 k=2
主成分和玩具数据的示例,改编自 documentation:
spark.version
# u'2.2.0'
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import PCA
data = [(Vectors.sparse(5, [(1, 1.0), (3, 7.0)]),),
... (Vectors.dense([2.0, 0.0, 3.0, 4.0, 5.0]),),
... (Vectors.dense([4.0, 0.0, 0.0, 6.0, 7.0]),)]
df = spark.createDataFrame(data,["features"])
pca = PCA(k=2, inputCol="features", outputCol="pca_features")
model = pca.fit(df)
model.explainedVariance
# DenseVector([0.7944, 0.2056])
即从我们的 k=2
主成分中,第一个解释了 79.44% 的方差,而第二个解释了剩余的 20.56%。
据我所知,pyspark 提供的 PCA API 如:
from pyspark.ml.feature import PCA
pca = PCA(k=3, inputCol="features", outputCol="pcaFeatures")
model = pca.fit(data_frame)
然而在现实中,我发现解释方差比的使用更为广泛。例如,在 sklearn 中:
from sklearn.decomposition import PCA
pca_fitter = PCA(n_components=0.85)
有谁知道如何在 pyspark 中实现解释方差比?谢谢!
从 Spark 2.0 开始,PCAModel
包含一个 explainedVariance
方法;来自 docs:
explainedVariance
Returns a vector of proportions of variance explained by each principal component.
New in version 2.0.0.
这是一个包含 k=2
主成分和玩具数据的示例,改编自 documentation:
spark.version
# u'2.2.0'
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import PCA
data = [(Vectors.sparse(5, [(1, 1.0), (3, 7.0)]),),
... (Vectors.dense([2.0, 0.0, 3.0, 4.0, 5.0]),),
... (Vectors.dense([4.0, 0.0, 0.0, 6.0, 7.0]),)]
df = spark.createDataFrame(data,["features"])
pca = PCA(k=2, inputCol="features", outputCol="pca_features")
model = pca.fit(df)
model.explainedVariance
# DenseVector([0.7944, 0.2056])
即从我们的 k=2
主成分中,第一个解释了 79.44% 的方差,而第二个解释了剩余的 20.56%。