kww*_*kww 3 pca pyspark apache-spark-ml
据我所知,pyspark提供PCA API,如:
from pyspark.ml.feature import PCA
pca = PCA(k=3, inputCol="features", outputCol="pcaFeatures")
model = pca.fit(data_frame)
Run Code Online (Sandbox Code Playgroud)
但实际上,我发现解释的方差比被更广泛地使用.例如,在sklearn中:
from sklearn.decomposition import PCA
pca_fitter = PCA(n_components=0.85)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在pyspark中实现解释的方差比?谢谢!
从Spark 2.0开始,PCAModel
包括一种explainedVariance
方法; 来自文档:
explainedVariance
返回由每个主成分解释的方差比例的向量.
2.0.0版中的新功能.
这是一个k=2
主要组件和玩具数据的示例,改编自文档:
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])
Run Code Online (Sandbox Code Playgroud)
即,从我们的k=2
主要成分来看,第一个解释了79.44%的方差,而第二个解释了剩余的20.56%.
归档时间: |
|
查看次数: |
1383 次 |
最近记录: |