我有一个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: 追溯(最近的呼叫最后一次)
答案 0 :(得分:1)
在Pyspark for mllib库中,您需要将所有功能转换为单个功能向量。 您可以使用Vector Assembler执行相同的操作: https://spark.apache.org/docs/latest/ml-features.html#vectorindexer
wmic path win32_VideoController get name
其中inputColsList包含您要使用的所有功能的列表