使用PySpark的Spark 2.3.0示例中的PCA

时间:2018-03-21 07:21:55

标签: apache-spark pyspark pca

我有一个Spark数据帧,我想用它来运行一个简单的PCA示例。我看过Converting between java.time.LocalDateTime and java.util.Date并注意到这是有效的,因为它们将这些特征转换为向量:

>>>from pyspark.mllib.linalg import Vectors
>>>from pyspark.mllib.linalg.distributed import RowMatrix
>>>from pyspark.ml.feature import PCA
>>>master = pd.read_parquet('master.parquet',engine='fastparquet')
>>>A = sc.parallelize(master)
>>>mat = RowMatrix(A)
>>>pc = mat.computePrincipalComponents(4)

我试图通过使用我创建自己的Spark Dataframe来重现相同类型的简单PCA。如何将我的Spark DataFrame转换为类似于上面的形式,以便我可以使用一个输入列和一个输出列来运行它?

我研究过使用RowMatrix this example,但我不明白这是否可行(参见下面的错误)。

{{1}}
  

Py4JJavaError:调用时发生错误   o382.computePrincipalComponents。 :org.apache.spark.SparkException:   作业因阶段失败而中止:阶段1.0中的任务0失败1次,   最近的失败:阶段1.0中的丢失任务0.0(TID 1,localhost,   执行程序驱动程序):org.apache.spark.api.python.PythonException:   追溯(最近的呼叫最后一次)

1 个答案:

答案 0 :(得分:1)

在Pyspark for mllib库中,您需要将所有功能转换为单个功能向量。 您可以使用Vector Assembler执行相同的操作: https://spark.apache.org/docs/latest/ml-features.html#vectorindexer

wmic path win32_VideoController get name 

其中inputColsList包含您要使用的所有功能的列表