【发布时间】:2018-07-09 15:16:24
【问题描述】:
我在 python 中使用 spark 2.2。我正在使用来自 ml.feature 模块的 PCA。我正在使用 VectorAssembler 将我的功能提供给 PCA。为了澄清,假设我有一个包含三列 col1、col2 和 col3 的表,那么我正在做:
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(inputCols=table.columns, outputCol="features")
df = assembler.transform(table).select("features")
from pyspark.ml.feature import PCA
pca = PCA(k=2, inputCol="features", outputCol="pcaFeatures")
model = pca.fit(df)
此时我已经使用 2 个组件运行 PCA,我可以将其值视为:
m = model.pc.values.reshape(3, 2)
对应于 3(= 我的原始表中的列数)行和 2(= 我的 PCA 中的组件数)列。我的问题是这里的三行是否与我将输入列指定给上面的向量汇编器的顺序相同?为了进一步澄清,上述矩阵是否对应于:
| PC1 | PC2 |
---------|-----|-----|
col1 | | |
---------|-----|-----|
col2 | | |
---------|-----|-----|
col3 | | |
---------+-----+-----+
请注意,此处的示例只是为了清楚起见。在我真正的问题中,我正在处理 ~1600 列和一堆选择。我在 spark 文档中找不到任何明确的答案。我想这样做是为了从我的原始表中挑选最好的列/特征来根据顶级主成分训练我的模型。或者我应该研究 spark ML PCA 中的其他/更好的东西来推断出这样的结果吗?
或者我不能为此使用 PCA,而必须使用其他技术,如 spearman 排名等?
【问题讨论】:
标签: apache-spark machine-learning pyspark pca feature-selection