应用PCA并保留总方差的百分比

时间:2017-05-04 11:46:51

标签: scala apache-spark machine-learning apache-spark-mllib pca

我想对特定数据集执行主成分分析,然后将主成分提供给LogisticRegression分类器。

具体来说,我想使用函数PCA来应用computePrincipalComponentsAndExplainedVariance并保留总方差的90%。

以下是阅读数据集的代码:

// Load the data
val text = sparkSession.sparkContext.textFile("dataset.data")        
val data = text.map(line => line.split(',').map(_.toDouble))  
// Separate to label and features
val dataLP = data.map(t => (t(57), Vectors.dense(t.take(57)))) 

我不太确定如何执行PCA以保持总方差的90%。

1 个答案:

答案 0 :(得分:2)

使用函数computePrincipalComponentsAndExplainedVariance,返回值将是一个矩阵以及一个向量,其值指示为每个主成分解释的方差。来自documentation

  

返回:大小为n-by-k的矩阵,其列为主成分,以及一个值向量,表示每个主成分解释的差异

通过使用足够大的k作为输入,您可以简单地将向量中的数字相加,直到它达到90%或更高,然后使用矩阵中的那么多列。