【问题标题】:How to get explained variance per PCA component in pyspark如何在pyspark中获得每个PCA组件的解释方差
【发布时间】:2018-06-18 23:58:58
【问题描述】:

据我所知,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 中实现解释方差比?谢谢!

【问题讨论】:

    标签: pyspark pca apache-spark-ml


    【解决方案1】:

    从 Spark 2.0 开始,PCAModel 包含一个 explainedVariance 方法;来自docs

    explainedVariance

    返回由每个主成分解释的方差比例向量。

    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%。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-09
      • 2017-09-30
      • 2017-09-07
      • 2017-09-04
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2016-01-30
      相关资源
      最近更新 更多