我有一个大的pyspark数据帧,列是一些产品,行是它随时间的推移的价格。我需要计算所有乘积的协方差矩阵,但数据太大,无法转换为pandas数据帧,所以我需要用pyspark来做。我到处找过,但找不出解决这个问题的办法。有人知道怎么做吗?
我已经有了相关矩阵,所以任何使用标准差对角矩阵的方法都是非常受欢迎的。
下面是我的数据帧的两列示例。
SparkML中有许多线性代数函数。您可能正在寻找RowMatrix
方法之一,特别是computeCovariance()
(Spark文档(。
假设你正在寻找的等价物:
dummy = pd.DataFrame([[1,2],[2,1]])
dummy.cov()
然后,您可以从dataframe
开始,使用pyspark计算协方差矩阵,如下所示:
from pyspark.mllib.linalg.distributed import RowMatrix
from pyspark.ml.feature import VectorAssembler
df = spark.createDataFrame([[1, 2], [2, 1]])
vector_col = "cov_features"
assembler = VectorAssembler(inputCols=df.columns, outputCol=vector_col, handleInvalid="skip")
df_vector = assembler.transform(df).select(vector_col)
mat_df = RowMatrix(df_vector)
mat_df = RowMatrix(df_vector.rdd.map(list))
result_df = mat_df.computeCovariance()
CCD_ 4的矢量化是必需的,因为CCD_。