Pyspark PCA 实施

Posted

技术标签:

【中文标题】Pyspark PCA 实施【英文标题】:Pyspark PCA Implementation 【发布时间】:2019-11-19 10:43:52 【问题描述】:

我遇到了一个问题,我想在 Pyspark Dataframe 列上进行 PCA。列的名称是“特征”,其中每一行都是一个 SparseVector。

这是流程:

Df - pyspark df 的名称

特征 - 列名

rdd 的片段

[Row(features=SparseVector(2,1:50.0)),

行(features=SparseVector(2,0:654.0, 1:20.0))],

from pyspark.mllib.linalg.distributed import RowMatrix
i   = RowMatrix(df.select(‘features’).rdd)
ipc = i.computePrincipalComponents(2)

Error Message

【问题讨论】:

【参考方案1】:

您将获得一个RDD[Row] 对象,其中您的RowRow(features=SparseVector(2,1:50.0))

你需要一个RDD[SparseVector],所以你应该换行:

i = RowMatrix(df.select(‘features’).rdd)

i = RowMatrix(df.select(‘features’).rdd.map(lambda x: x[0]))

这将返回RDD[SparseVector]

【讨论】:

谢谢您,但仍然无法正常工作。我有一个新错误“无法将类型 转换为 Vector。 在数据框中将你的 SparseVector 转换为 Vector @HPZ001 太棒了。如果有帮助,请点赞并选择答案

以上是关于Pyspark PCA 实施的主要内容,如果未能解决你的问题,请参考以下文章

PySpark PCA:从模型对象中获取组件数量

数据分析工具篇——Pyspark实现PCA主成分

具有大量特征的 pyspark PCA

如何在 pyspark 管道中打印最佳模型参数

使用 PySpark 进行主成分分析

PySpark - 选择每周 3 天、每月 3 周看到的用户