PCA
PCA为ML API。
模型接口类别 |
函数接口 |
---|---|
ML API |
def fit(dataset: Dataset[_]): PCAModel |
def fit(dataset: Dataset[_], paramMaps: Array[ParamMap]): Seq[PCAModel] |
|
def fit(dataset: Dataset[_], paramMap: ParamMap): PCAModel |
|
def fit(dataset: Dataset[_], firstParamPair: ParamPair[_], otherParamPairs: ParamPair[_]*): PCAModel |
ML API
- 功能描述
- 输入输出
- 包名:org.apache.spark.ml.feature
- 类名:PCA
- 方法名:fit
- 输入:矩阵Dataset[_],主成分个数。
Param name
Type(s)
Description
dataset
Dataset[Vector]
矩阵,以行为单位进行存储
k
Int
主成分个数
- 算法参数
Param name
Type( s)
Default
Description
setk(value:Int)
k
-
要求的主成分个数,取值范围
[1,n]
参数及fit代码接口示例:
import org.apache.spark.ml.param.{ParamMap, ParamPair} val pca = new MLPCA() //定义def fit(dataset: Dataset[_], paramMap: ParamMap) 接口参数 val paramMap = ParamMap(pca.k -> params.k) .put(pca.inputCol, "matrix") // 定义def fit(dataset: Dataset[_], paramMaps: Array[ParamMap]): 接口参数 val paramMaps: Array[ParamMap] = new Array[ParamMap](2) for (i <- 0 to 2) { paramMaps(i) = ParamMap(pca.k -> params.k) .put(pca.inputCol, "matrix") }//对paramMaps进行赋值 // 定义def fit(dataset: Dataset[_], firstParamPair: ParamPair[_], otherParamPairs: ParamPair[_]*) 接口参数 val kParamPair = ParamPair(pca.k,k) // 调用各个fit接口 model = pca.fit(trainingData) model = pca.fit(trainingData, paramMap) models = pca.fit(trainingData, paramMaps) model = pca.fit(trainingData, kParamPair)
- 输出:PCAModel,包含主成分和对应的权重。
Param name
Type(s)
Description
pc
DenseMatrix
主成分矩阵,每一列都是一个主成分向量
explainedVariance
DenseVector
主成分对应的权重,每一维对应一个主成分
- 使用样例
import org.apache.spark.ml.feature.PCA import org.apache.spark.ml.linalg.Vectors val data = Array( Vectors.sparse(5, Seq((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) ) val df = spark.createDataFrame(data.map(Tuple1.apply)).toDF("features") val pca = new PCA() .setInputCol("features") .setOutputCol("pcaFeatures") .setK(3) .fit(df) val result = pca.transform(df).select("pcaFeatures")
父主题: 算法API