我正在对我的数据进行pca,我阅读了以下指南:https://spark.apache.org/docs/latest/mllib-dimensionality-reduction
相关代码如下:
import org.apache.spark.mllib.feature.PCA
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.rdd.RDD
val data: RDD[LabeledPoint] = sc.parallelize(Seq(
new LabeledPoint(0, Vectors.dense(1, 0, 0, 0, 1)),
new LabeledPoint(1, Vectors.dense(1, 1, 0, 1, 0)),
new LabeledPoint(1, Vectors.dense(1, 1, 0, 0, 0)),
new LabeledPoint(0, Vectors.dense(1, 0, 0, 0, 0)),
new LabeledPoint(1, Vectors.dense(1, 1, 0, 0, 0))))
// Compute the top 5 principal components.
val pca = new PCA(5).fit(data.map(_.features))
// Project vectors to the linear space spanned by the top 5 principal
// components, keeping the label
val projected = data.map(p => p.copy(features = pca.transform(p.features)))
此代码对数据执行pca。但是,我找不到示例代码或文档来解释如何保存和加载适合的pca对象以供将来使用。有人能给我一个基于上述代码的例子吗?
2条答案
按热度按时间w8ntj3qf1#
pca mlib版本似乎不支持将模型保存到磁盘。您可以保存生成的pcamodel的pc矩阵。但是,请使用spar ml版本。它返回可以序列化并包含在sparkml管道中的spark估计器。
ao218c7q2#
示例代码基于@emicareofcell44 answer,使用
PCA
以及PCAModel
从org.apache.spark.ml.feature
: